From 0e9a9d06a4ec861968da7184eb06ee6353dc6953 Mon Sep 17 00:00:00 2001 From: Alan Orth Date: Wed, 31 Jan 2018 12:01:34 +0200 Subject: [PATCH] Add notes for 2018-01-31 --- content/post/2018-01.md | 72 +++++++++++++++++++++ public/2018-01/index.html | 88 +++++++++++++++++++++++++- public/2018/01/cpu-week.png | Bin 0 -> 12636 bytes public/2018/01/tomcat-threads-day.png | Bin 0 -> 7238 bytes public/sitemap.xml | 10 +-- static/2018/01/cpu-week.png | Bin 0 -> 12636 bytes static/2018/01/tomcat-threads-day.png | Bin 0 -> 7238 bytes 7 files changed, 162 insertions(+), 8 deletions(-) create mode 100644 public/2018/01/cpu-week.png create mode 100644 public/2018/01/tomcat-threads-day.png create mode 100644 static/2018/01/cpu-week.png create mode 100644 static/2018/01/tomcat-threads-day.png diff --git a/content/post/2018-01.md b/content/post/2018-01.md index 7fae0a865..1a58bfb67 100644 --- a/content/post/2018-01.md +++ b/content/post/2018-01.md @@ -1288,3 +1288,75 @@ Catalina:type=DataSource,class=javax.sql.DataSource,name="jdbc/dspace" maxActiv ``` - I filed a ticket with Atmire: https://tracker.atmire.com/tickets-cgiar-ilri/view-ticket?id=566 + +## 2018-01-31 + +- UptimeRobot says CGSpace went down at 7:57 AM, and indeed I see a lot of HTTP 499 codes in nginx logs +- PostgreSQL activity shows 222 database connections +- Now PostgreSQL activity shows 265 database connections! +- I don't see any errors anywhere... +- Now PostgreSQL activity shows 308 connections! +- Well this is interesting, there are 400 Tomcat threads busy: + +``` +# munin-run tomcat_threads +busy.value 400 +idle.value 0 +max.value 400 +``` + +- And wow, we finally exhausted the database connections, from dspace.log: + +``` +2018-01-31 08:05:28,964 ERROR org.dspace.storage.rdbms.DatabaseManager @ SQL connection Error - +org.apache.tomcat.jdbc.pool.PoolExhaustedException: [http-bio-127.0.0.1-8443-exec-451] Timeout: Pool empty. Unable to fetch a connection in 5 seconds, none available[size:300; busy:300; idle:0; lastwait:5000]. +``` + +- Now even the nightly Atmire background thing is getting HTTP 500 error: + +``` +Jan 31, 2018 8:16:05 AM com.sun.jersey.spi.container.ContainerResponse logException +SEVERE: Mapped exception to response: 500 (Internal Server Error) +javax.ws.rs.WebApplicationException +``` + +- For now I will restart Tomcat to clear this shit and bring the site back up +- The top IPs from this morning, during 7 and 8AM in XMLUI and REST/OAI: + +``` +# cat /var/log/nginx/access.log /var/log/nginx/access.log.1 /var/log/nginx/library-access.log /var/log/nginx/library-access.log.1 /var/log/nginx/error.log /var/log/nginx/error.log.1 | grep -E "31/Jan/2018:(07|08)" | awk '{print $1}' | sort | uniq -c | sort -n | tail -n 10 + 67 66.249.66.70 + 70 207.46.13.12 + 71 197.210.168.174 + 83 207.46.13.13 + 85 157.55.39.79 + 89 207.46.13.14 + 123 68.180.228.157 + 198 66.249.66.90 + 219 41.204.190.40 + 255 2405:204:a208:1e12:132:2a8e:ad28:46c0 +# cat /var/log/nginx/rest.log /var/log/nginx/rest.log.1 /var/log/nginx/oai.log /var/log/nginx/oai.log.1 | grep -E "31/Jan/2018:(07|08)" | awk '{print $1}' | sort | uniq -c | sort -n | tail -n 10 + 2 65.55.210.187 + 2 66.249.66.90 + 3 157.55.39.79 + 4 197.232.39.92 + 4 34.216.252.127 + 6 104.196.152.243 + 6 213.55.85.89 + 15 122.52.115.13 + 16 213.55.107.186 + 596 45.5.184.196 +``` + +- This looks reasonable to me, so I have no idea why we ran out of Tomcat threads + +![Tomcat threads](/cgspace-notes/2018/01/tomcat-threads-day.png) + +- We need to start graphing the Tomcat sessions as well, though that requires JMX +- Also, I wonder if I could disable the nightly Atmire thing +- God, I don't know where this load is coming from +- Since I bumped up the Tomcat threads from 200 to 400 the load on the server has been sustained at about 200%: + +![CPU usage week](/cgspace-notes/2018/01/cpu-week.png) + +- I should make separate database pools for the web applications and the API applications like REST and OAI diff --git a/public/2018-01/index.html b/public/2018-01/index.html index a41cc2347..91f4c5de1 100644 --- a/public/2018-01/index.html +++ b/public/2018-01/index.html @@ -92,7 +92,7 @@ Danny wrote to ask for help renewing the wildcard ilri.org certificate and I adv - + @@ -194,9 +194,9 @@ Danny wrote to ask for help renewing the wildcard ilri.org certificate and I adv "@type": "BlogPosting", "headline": "January, 2018", "url": "https://alanorth.github.io/cgspace-notes/2018-01/", - "wordCount": "7537", + "wordCount": "7885", "datePublished": "2018-01-02T08:35:54-08:00", - "dateModified": "2018-01-29T09:47:55+02:00", + "dateModified": "2018-01-29T12:25:30+02:00", "author": { "@type": "Person", "name": "Alan Orth" @@ -1688,6 +1688,88 @@ Catalina:type=DataSource,class=javax.sql.DataSource,name="jdbc/dspace"
  • I filed a ticket with Atmire: https://tracker.atmire.com/tickets-cgiar-ilri/view-ticket?id=566
  • +

    2018-01-31

    + + + +
    # munin-run tomcat_threads
    +busy.value 400
    +idle.value 0
    +max.value 400
    +
    + + + +
    2018-01-31 08:05:28,964 ERROR org.dspace.storage.rdbms.DatabaseManager @ SQL connection Error - 
    +org.apache.tomcat.jdbc.pool.PoolExhaustedException: [http-bio-127.0.0.1-8443-exec-451] Timeout: Pool empty. Unable to fetch a connection in 5 seconds, none available[size:300; busy:300; idle:0; lastwait:5000].
    +
    + + + +
    Jan 31, 2018 8:16:05 AM com.sun.jersey.spi.container.ContainerResponse logException
    +SEVERE: Mapped exception to response: 500 (Internal Server Error)
    +javax.ws.rs.WebApplicationException
    +
    + + + +
    # cat /var/log/nginx/access.log /var/log/nginx/access.log.1 /var/log/nginx/library-access.log /var/log/nginx/library-access.log.1 /var/log/nginx/error.log /var/log/nginx/error.log.1 | grep -E "31/Jan/2018:(07|08)" | awk '{print $1}' | sort | uniq -c | sort -n | tail -n 10
    +     67 66.249.66.70
    +     70 207.46.13.12
    +     71 197.210.168.174
    +     83 207.46.13.13
    +     85 157.55.39.79
    +     89 207.46.13.14
    +    123 68.180.228.157
    +    198 66.249.66.90
    +    219 41.204.190.40
    +    255 2405:204:a208:1e12:132:2a8e:ad28:46c0
    +# cat /var/log/nginx/rest.log /var/log/nginx/rest.log.1 /var/log/nginx/oai.log /var/log/nginx/oai.log.1 | grep -E "31/Jan/2018:(07|08)" | awk '{print $1}' | sort | uniq -c | sort -n | tail -n 10
    +      2 65.55.210.187
    +      2 66.249.66.90
    +      3 157.55.39.79
    +      4 197.232.39.92
    +      4 34.216.252.127
    +      6 104.196.152.243
    +      6 213.55.85.89
    +     15 122.52.115.13
    +     16 213.55.107.186
    +    596 45.5.184.196
    +
    + + + +

    Tomcat threads

    + + + +

    CPU usage week

    + + + diff --git a/public/2018/01/cpu-week.png b/public/2018/01/cpu-week.png new file mode 100644 index 0000000000000000000000000000000000000000..866cc3086e68fb58af82bdb4555c2dd523665b5a GIT binary patch literal 12636 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 KtXjk{;C})3z|t82 literal 0 HcmV?d00001 diff --git a/public/2018/01/tomcat-threads-day.png b/public/2018/01/tomcat-threads-day.png new file mode 100644 index 0000000000000000000000000000000000000000..e145072286847b21051f14f04419fcb20123ec2b GIT binary patch literal 7238 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 cy1)FKC8asEO`lsX{|BjbH4QY%pW8 https://alanorth.github.io/cgspace-notes/2018-01/ - 2018-01-29T09:47:55+02:00 + 2018-01-29T12:25:30+02:00 @@ -144,7 +144,7 @@ https://alanorth.github.io/cgspace-notes/ - 2018-01-29T09:47:55+02:00 + 2018-01-29T12:25:30+02:00 0 @@ -155,7 +155,7 @@ https://alanorth.github.io/cgspace-notes/tags/notes/ - 2018-01-29T09:47:55+02:00 + 2018-01-29T12:25:30+02:00 0 @@ -167,13 +167,13 @@ https://alanorth.github.io/cgspace-notes/post/ - 2018-01-29T09:47:55+02:00 + 2018-01-29T12:25:30+02:00 0 https://alanorth.github.io/cgspace-notes/tags/ - 2018-01-29T09:47:55+02:00 + 2018-01-29T12:25:30+02:00 0 diff --git a/static/2018/01/cpu-week.png b/static/2018/01/cpu-week.png new file mode 100644 index 0000000000000000000000000000000000000000..866cc3086e68fb58af82bdb4555c2dd523665b5a GIT binary patch literal 12636 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 KtXjk{;C})3z|t82 literal 0 HcmV?d00001 diff --git a/static/2018/01/tomcat-threads-day.png b/static/2018/01/tomcat-threads-day.png new file mode 100644 index 0000000000000000000000000000000000000000..e145072286847b21051f14f04419fcb20123ec2b GIT binary patch literal 7238 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 cy1)FKC8asEO`lsX{|BjbH4QY%pW8