From 6f3b199d9f46ea359318543044c370a7ce2b6268 Mon Sep 17 00:00:00 2001 From: Alan Orth Date: Tue, 10 Apr 2018 08:27:55 +0300 Subject: [PATCH] Add notes for 2018-04-10 --- content/posts/2017-11.md | 6 +- content/posts/2018-04.md | 142 +++++++++++++++++ docs/2015-11/index.html | 2 +- docs/2015-12/index.html | 2 +- docs/2016-01/index.html | 2 +- docs/2016-02/index.html | 2 +- docs/2016-03/index.html | 2 +- docs/2016-04/index.html | 2 +- docs/2016-05/index.html | 2 +- docs/2016-06/index.html | 2 +- docs/2016-07/index.html | 2 +- docs/2016-08/index.html | 2 +- docs/2016-09/index.html | 2 +- docs/2016-10/index.html | 2 +- docs/2016-11/index.html | 2 +- docs/2016-12/index.html | 2 +- docs/2017-01/index.html | 2 +- docs/2017-02/index.html | 2 +- docs/2017-03/index.html | 2 +- docs/2017-04/index.html | 2 +- docs/2017-05/index.html | 2 +- docs/2017-06/index.html | 2 +- docs/2017-07/index.html | 2 +- docs/2017-08/index.html | 2 +- docs/2017-09/index.html | 2 +- docs/2017-10/index.html | 2 +- docs/2017-11/index.html | 8 +- docs/2017-12/index.html | 2 +- docs/2018-01/index.html | 2 +- docs/2018-02/index.html | 2 +- docs/2018-03/index.html | 2 +- docs/2018-04/index.html | 162 +++++++++++++++++++- docs/2018/04/jmx_dspace_sessions-week.png | Bin 0 -> 12075 bytes docs/404.html | 2 +- docs/categories/index.html | 2 +- docs/categories/notes/index.html | 2 +- docs/categories/notes/page/2/index.html | 2 +- docs/categories/notes/page/3/index.html | 2 +- docs/categories/notes/page/4/index.html | 2 +- docs/categories/page/2/index.html | 2 +- docs/categories/page/3/index.html | 2 +- docs/categories/page/4/index.html | 2 +- docs/cgiar-library-migration/index.html | 2 +- docs/index.html | 2 +- docs/page/2/index.html | 2 +- docs/page/3/index.html | 2 +- docs/page/4/index.html | 2 +- docs/posts/index.html | 2 +- docs/posts/page/2/index.html | 2 +- docs/posts/page/3/index.html | 2 +- docs/posts/page/4/index.html | 2 +- docs/sitemap.xml | 10 +- docs/tags/index.html | 2 +- docs/tags/notes/index.html | 2 +- docs/tags/notes/page/2/index.html | 2 +- docs/tags/notes/page/3/index.html | 2 +- docs/tags/notes/page/4/index.html | 2 +- docs/tags/page/2/index.html | 2 +- docs/tags/page/3/index.html | 2 +- docs/tags/page/4/index.html | 2 +- static/2018/04/jmx_dspace_sessions-week.png | Bin 0 -> 12075 bytes 61 files changed, 366 insertions(+), 70 deletions(-) create mode 100644 docs/2018/04/jmx_dspace_sessions-week.png create mode 100644 static/2018/04/jmx_dspace_sessions-week.png diff --git a/content/posts/2017-11.md b/content/posts/2017-11.md index a1e3bcb98..3b3ec349c 100644 --- a/content/posts/2017-11.md +++ b/content/posts/2017-11.md @@ -540,9 +540,9 @@ $ grep 104.196.152.243 dspace.log.2017-11-07 | grep -o -E 'session_id=[A-Z0-9]{3 - What's amazing is that it seems to reuse its Java session across all requests: ``` -$ grep -c -E 'session_id=[A-Z0-9]{32}:ip_addr=5.9.6.51' /home/cgspace.cgiar.org/log/dspace.log.2017-11-12 +$ grep -c -E 'session_id=[A-Z0-9]{32}:ip_addr=5.9.6.51' dspace.log.2017-11-12 1558 -$ grep 5.9.6.51 /home/cgspace.cgiar.org/log/dspace.log.2017-11-12 | grep -o -E 'session_id=[A-Z0-9]{32}' | sort -n | uniq | wc -l +$ grep 5.9.6.51 dspace.log.2017-11-12 | grep -o -E 'session_id=[A-Z0-9]{32}' | sort -n | uniq | wc -l 1 ``` @@ -552,7 +552,7 @@ $ grep 5.9.6.51 /home/cgspace.cgiar.org/log/dspace.log.2017-11-12 | grep -o -E ' ``` # grep 95.108.181.88 /var/log/nginx/access.log | tail -n 1 95.108.181.88 - - [12/Nov/2017:08:33:17 +0000] "GET /bitstream/handle/10568/57004/GenebankColombia_23Feb2015.pdf HTTP/1.1" 200 972019 "-" "Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)" -$ grep -c -E 'session_id=[A-Z0-9]{32}:ip_addr=95.108.181.88' /home/cgspace.cgiar.org/log/dspace.log.2017-11-12 +$ grep -c -E 'session_id=[A-Z0-9]{32}:ip_addr=95.108.181.88' dspace.log.2017-11-12 991 ``` diff --git a/content/posts/2018-04.md b/content/posts/2018-04.md index 202210d6c..1a5b39394 100644 --- a/content/posts/2018-04.md +++ b/content/posts/2018-04.md @@ -78,3 +78,145 @@ $ git rebase -i dspace-5.8 - DS-3583 Usage of correct Collection Array (#1731) (upstream commit on dspace-5_x: c8f62e6f496fa86846bfa6bcf2d16811087d9761) - ... but somehow git knew, and didn't include them in my interactive rebase! - I need to send this branch to Atmire and also arrange payment (see [ticket #560](https://tracker.atmire.com/tickets-cgiar-ilri/view-ticket?id=560) in their tracker) +- Fix Sisay's SSH access to the new DSpace Test server (linode19) + +## 2018-04-05 + +- Fix Sisay's sudo access on the new DSpace Test server (linode19) +- The reindexing process on DSpace Test took _forever_ yesterday: + +``` +$ time schedtool -D -e ionice -c2 -n7 nice -n19 dspace index-discovery -b + +real 599m32.961s +user 9m3.947s +sys 2m52.585s +``` + +- So we really should not use this Linode block storage for Solr +- Assetstore might be fine but would complicate things with configuration and deployment (ughhh) +- Better to use Linode block storage only for backup +- Help Peter with the GDPR compliance / reporting form for CGSpace +- DSpace Test crashed due to memory issues again: + +``` +# grep -c 'java.lang.OutOfMemoryError: Java heap space' /var/log/tomcat7/catalina.out +16 +``` + +- I ran all system updates on DSpace Test and rebooted it +- Proof some records on DSpace Test for Udana from IWMI +- He has done better with the small syntax and consistency issues but then there are larger concerns with not linking to DOIs, copying titles incorrectly, etc + +## 2018-04-10 + +- I got a notice that CGSpace CPU usage was very high this morning +- Looking at the nginx logs, here are the top users today so far: + +``` +# zcat --force /var/log/nginx/*.log /var/log/nginx/*.log.1 | grep -E "10/Apr/2018" | awk '{print $1}' | sort | uniq -c | sort -n | tail -n 10 + 282 207.46.13.112 + 286 54.175.208.220 + 287 207.46.13.113 + 298 66.249.66.153 + 322 207.46.13.114 + 780 104.196.152.243 + 3994 178.154.200.38 + 4295 70.32.83.92 + 4388 95.108.181.88 + 7653 45.5.186.2 +``` + +- 45.5.186.2 is of course CIAT +- 95.108.181.88 appears to be Yandex: + +``` +95.108.181.88 - - [09/Apr/2018:06:34:16 +0000] "GET /bitstream/handle/10568/21794/ILRI_logo_usage.jpg.jpg HTTP/1.1" 200 2638 "-" "Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)" +``` + +- And for some reason Yandex created a lot of Tomcat sessions today: + +``` +$ grep -c -E 'session_id=[A-Z0-9]{32}:ip_addr=95.108.181.88' dspace.log.2018-04-10 +4363 +``` + +- 70.32.83.92 appears to be some harvester we've seen before, but on a new IP +- They are not creating new Tomcat sessions so there is no problem there +- 178.154.200.38 also appears to be Yandex, and is also creating many Tomcat sessions: + +``` +$ grep -c -E 'session_id=[A-Z0-9]{32}:ip_addr=178.154.200.38' dspace.log.2018-04-10 +3982 +``` + +- I'm not sure why Yandex creates so many Tomcat sessions, as its user agent should match the Crawler Session Manager valve +- Let's try a manual request with and without their user agent: + +``` +$ http --print Hh https://cgspace.cgiar.org/bitstream/handle/10568/21794/ILRI_logo_usage.jpg.jpg 'User-Agent:Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)' +GET /bitstream/handle/10568/21794/ILRI_logo_usage.jpg.jpg HTTP/1.1 +Accept: */* +Accept-Encoding: gzip, deflate +Connection: keep-alive +Host: cgspace.cgiar.org +User-Agent: Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots) + +HTTP/1.1 200 OK +Connection: keep-alive +Content-Language: en-US +Content-Length: 2638 +Content-Type: image/jpeg;charset=ISO-8859-1 +Date: Tue, 10 Apr 2018 05:18:37 GMT +Expires: Tue, 10 Apr 2018 06:18:37 GMT +Last-Modified: Tue, 25 Apr 2017 07:05:54 GMT +Server: nginx +Strict-Transport-Security: max-age=15768000 +Vary: User-Agent +X-Cocoon-Version: 2.2.0 +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-XSS-Protection: 1; mode=block + +$ http --print Hh https://cgspace.cgiar.org/bitstream/handle/10568/21794/ILRI_logo_usage.jpg.jpg +GET /bitstream/handle/10568/21794/ILRI_logo_usage.jpg.jpg HTTP/1.1 +Accept: */* +Accept-Encoding: gzip, deflate +Connection: keep-alive +Host: cgspace.cgiar.org +User-Agent: HTTPie/0.9.9 + +HTTP/1.1 200 OK +Connection: keep-alive +Content-Language: en-US +Content-Length: 2638 +Content-Type: image/jpeg;charset=ISO-8859-1 +Date: Tue, 10 Apr 2018 05:20:08 GMT +Expires: Tue, 10 Apr 2018 06:20:08 GMT +Last-Modified: Tue, 25 Apr 2017 07:05:54 GMT +Server: nginx +Set-Cookie: JSESSIONID=31635DB42B66D6A4208CFCC96DD96875; Path=/; Secure; HttpOnly +Strict-Transport-Security: max-age=15768000 +Vary: User-Agent +X-Cocoon-Version: 2.2.0 +X-Content-Type-Options: nosniff +X-Frame-Options: SAMEORIGIN +X-XSS-Protection: 1; mode=block +``` + +- So it definitely looks like Yandex requests are getting assigned a session from the Crawler Session Manager valve +- And if I look at the DSpace log I see its IP sharing a session with other crawlers like Google (66.249.66.153) +- Indeed the number of Tomcat sessions appears to be normal: + +![Tomcat sessions week](/cgspace-notes/2018/04/jmx_dspace_sessions-week.png) + +- Looks like the number of total requests processed by nginx in March went down from the previous months: + +``` +# time zcat --force /var/log/nginx/* | grep -cE "[0-9]{1,2}/Mar/2018" +2266594 + +real 0m13.658s +user 0m16.533s +sys 0m1.087s +``` diff --git a/docs/2015-11/index.html b/docs/2015-11/index.html index 1ff9bc292..eb737955c 100644 --- a/docs/2015-11/index.html +++ b/docs/2015-11/index.html @@ -53,7 +53,7 @@ $ psql -c 'SELECT * from pg_stat_activity;' | grep idle | grep -c cgspac "/> - + diff --git a/docs/2015-12/index.html b/docs/2015-12/index.html index 23bfc40e9..c3c14ca2e 100644 --- a/docs/2015-12/index.html +++ b/docs/2015-12/index.html @@ -55,7 +55,7 @@ Replace lzop with xz in log compression cron jobs on DSpace Test—it uses less "/> - + diff --git a/docs/2016-01/index.html b/docs/2016-01/index.html index c0b396048..2be4103c9 100644 --- a/docs/2016-01/index.html +++ b/docs/2016-01/index.html @@ -45,7 +45,7 @@ Update GitHub wiki for documentation of maintenance tasks. "/> - + diff --git a/docs/2016-02/index.html b/docs/2016-02/index.html index 86943c703..f9416e75c 100644 --- a/docs/2016-02/index.html +++ b/docs/2016-02/index.html @@ -59,7 +59,7 @@ Also, lots of things like “COTE D`LVOIRE” and “COTE D IVOIRE&r "/> - + diff --git a/docs/2016-03/index.html b/docs/2016-03/index.html index 954938786..7dbb9700d 100644 --- a/docs/2016-03/index.html +++ b/docs/2016-03/index.html @@ -45,7 +45,7 @@ Reinstall my local (Mac OS X) DSpace stack with Tomcat 7, PostgreSQL 9.3, and Ja "/> - + diff --git a/docs/2016-04/index.html b/docs/2016-04/index.html index aaf7d84af..3d29e21e6 100644 --- a/docs/2016-04/index.html +++ b/docs/2016-04/index.html @@ -49,7 +49,7 @@ Also, I noticed the checker log has some errors we should pay attention to: "/> - + diff --git a/docs/2016-05/index.html b/docs/2016-05/index.html index 6947e8a92..c26187fb8 100644 --- a/docs/2016-05/index.html +++ b/docs/2016-05/index.html @@ -53,7 +53,7 @@ There are 3,000 IPs accessing the REST API in a 24-hour period! "/> - + diff --git a/docs/2016-06/index.html b/docs/2016-06/index.html index 55b196f9e..d387d738a 100644 --- a/docs/2016-06/index.html +++ b/docs/2016-06/index.html @@ -51,7 +51,7 @@ Working on second phase of metadata migration, looks like this will work for mov "/> - + diff --git a/docs/2016-07/index.html b/docs/2016-07/index.html index 9b784207c..3b2dc1fed 100644 --- a/docs/2016-07/index.html +++ b/docs/2016-07/index.html @@ -67,7 +67,7 @@ In this case the select query was showing 95 results before the update "/> - + diff --git a/docs/2016-08/index.html b/docs/2016-08/index.html index 85d1b8ec5..25f11725b 100644 --- a/docs/2016-08/index.html +++ b/docs/2016-08/index.html @@ -61,7 +61,7 @@ $ git rebase -i dspace-5.5 "/> - + diff --git a/docs/2016-09/index.html b/docs/2016-09/index.html index 4d5ab3d39..8167ea366 100644 --- a/docs/2016-09/index.html +++ b/docs/2016-09/index.html @@ -53,7 +53,7 @@ $ ldapsearch -x -H ldaps://svcgroot2.cgiarad.org:3269/ -b "dc=cgiarad,dc=or "/> - + diff --git a/docs/2016-10/index.html b/docs/2016-10/index.html index c52765814..1e4c2e447 100644 --- a/docs/2016-10/index.html +++ b/docs/2016-10/index.html @@ -61,7 +61,7 @@ I exported a random item’s metadata as CSV, deleted all columns except id "/> - + diff --git a/docs/2016-11/index.html b/docs/2016-11/index.html index ec8b400a2..6ba10768d 100644 --- a/docs/2016-11/index.html +++ b/docs/2016-11/index.html @@ -45,7 +45,7 @@ Add dc.type to the output options for Atmire’s Listings and Reports module "/> - + diff --git a/docs/2016-12/index.html b/docs/2016-12/index.html index d58cc62b0..57d7edf83 100644 --- a/docs/2016-12/index.html +++ b/docs/2016-12/index.html @@ -69,7 +69,7 @@ Another worrying error from dspace.log is: "/> - + diff --git a/docs/2017-01/index.html b/docs/2017-01/index.html index 063bbd1d0..d00f14343 100644 --- a/docs/2017-01/index.html +++ b/docs/2017-01/index.html @@ -45,7 +45,7 @@ I asked on the dspace-tech mailing list because it seems to be broken, and actua "/> - + diff --git a/docs/2017-02/index.html b/docs/2017-02/index.html index aedd36501..9b0911d32 100644 --- a/docs/2017-02/index.html +++ b/docs/2017-02/index.html @@ -73,7 +73,7 @@ Looks like we’ll be using cg.identifier.ccafsprojectpii as the field name "/> - + diff --git a/docs/2017-03/index.html b/docs/2017-03/index.html index e4efbcd0c..e4830f7f6 100644 --- a/docs/2017-03/index.html +++ b/docs/2017-03/index.html @@ -77,7 +77,7 @@ $ identify ~/Desktop/alc_contrastes_desafios.jpg "/> - + diff --git a/docs/2017-04/index.html b/docs/2017-04/index.html index c6adf7618..3c1ce3dbf 100644 --- a/docs/2017-04/index.html +++ b/docs/2017-04/index.html @@ -63,7 +63,7 @@ $ [dspace]/bin/dspace filter-media -f -i 10568/16498 -p "ImageMagick PDF Th "/> - + diff --git a/docs/2017-05/index.html b/docs/2017-05/index.html index 2a9619dba..58fb4d78a 100644 --- a/docs/2017-05/index.html +++ b/docs/2017-05/index.html @@ -29,7 +29,7 @@ - + diff --git a/docs/2017-06/index.html b/docs/2017-06/index.html index e3c1ac885..2dc13a8a3 100644 --- a/docs/2017-06/index.html +++ b/docs/2017-06/index.html @@ -29,7 +29,7 @@ - + diff --git a/docs/2017-07/index.html b/docs/2017-07/index.html index 92f1099e3..39ac8e9de 100644 --- a/docs/2017-07/index.html +++ b/docs/2017-07/index.html @@ -57,7 +57,7 @@ We can use PostgreSQL’s extended output format (-x) plus sed to format the "/> - + diff --git a/docs/2017-08/index.html b/docs/2017-08/index.html index ac446b896..947c0379d 100644 --- a/docs/2017-08/index.html +++ b/docs/2017-08/index.html @@ -77,7 +77,7 @@ Then I cleaned up the author authorities and HTML characters in OpenRefine and s "/> - + diff --git a/docs/2017-09/index.html b/docs/2017-09/index.html index 2478f7ade..00d1ac386 100644 --- a/docs/2017-09/index.html +++ b/docs/2017-09/index.html @@ -53,7 +53,7 @@ Ask Sisay to clean up the WLE approvers a bit, as Marianne’s user account "/> - + diff --git a/docs/2017-10/index.html b/docs/2017-10/index.html index b20fa938b..c9fb785d7 100644 --- a/docs/2017-10/index.html +++ b/docs/2017-10/index.html @@ -57,7 +57,7 @@ Add Katherine Lutz to the groups for content submission and edit steps of the CG "/> - + diff --git a/docs/2017-11/index.html b/docs/2017-11/index.html index 2efe9c295..9ef5651d0 100644 --- a/docs/2017-11/index.html +++ b/docs/2017-11/index.html @@ -77,7 +77,7 @@ COPY 54701 "/> - + @@ -754,9 +754,9 @@ $ grep 104.196.152.243 dspace.log.2017-11-07 | grep -o -E 'session_id=[A-Z0-9]{3
  • What’s amazing is that it seems to reuse its Java session across all requests:
  • -
    $ grep -c -E 'session_id=[A-Z0-9]{32}:ip_addr=5.9.6.51' /home/cgspace.cgiar.org/log/dspace.log.2017-11-12
    +
    $ grep -c -E 'session_id=[A-Z0-9]{32}:ip_addr=5.9.6.51' dspace.log.2017-11-12
     1558
    -$ grep 5.9.6.51 /home/cgspace.cgiar.org/log/dspace.log.2017-11-12 | grep -o -E 'session_id=[A-Z0-9]{32}' | sort -n | uniq | wc -l
    +$ grep 5.9.6.51 dspace.log.2017-11-12 | grep -o -E 'session_id=[A-Z0-9]{32}' | sort -n | uniq | wc -l
     1
     
    @@ -767,7 +767,7 @@ $ grep 5.9.6.51 /home/cgspace.cgiar.org/log/dspace.log.2017-11-12 | grep -o -E '
    # grep 95.108.181.88 /var/log/nginx/access.log | tail -n 1
     95.108.181.88 - - [12/Nov/2017:08:33:17 +0000] "GET /bitstream/handle/10568/57004/GenebankColombia_23Feb2015.pdf HTTP/1.1" 200 972019 "-" "Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)"
    -$ grep -c -E 'session_id=[A-Z0-9]{32}:ip_addr=95.108.181.88' /home/cgspace.cgiar.org/log/dspace.log.2017-11-12
    +$ grep -c -E 'session_id=[A-Z0-9]{32}:ip_addr=95.108.181.88' dspace.log.2017-11-12
     991
     
    diff --git a/docs/2017-12/index.html b/docs/2017-12/index.html index dcc4f367a..b345a78b7 100644 --- a/docs/2017-12/index.html +++ b/docs/2017-12/index.html @@ -47,7 +47,7 @@ The list of connections to XMLUI and REST API for today: "/> - + diff --git a/docs/2018-01/index.html b/docs/2018-01/index.html index 83b4d1a1b..91d4385b1 100644 --- a/docs/2018-01/index.html +++ b/docs/2018-01/index.html @@ -185,7 +185,7 @@ Danny wrote to ask for help renewing the wildcard ilri.org certificate and I adv "/> - + diff --git a/docs/2018-02/index.html b/docs/2018-02/index.html index 7aae83cd6..c0f68a3c0 100644 --- a/docs/2018-02/index.html +++ b/docs/2018-02/index.html @@ -47,7 +47,7 @@ I copied the logic in the jmx_tomcat_dbpools provided by Ubuntu’s munin-pl "/> - + diff --git a/docs/2018-03/index.html b/docs/2018-03/index.html index 2cfb72e6f..c8d221c5c 100644 --- a/docs/2018-03/index.html +++ b/docs/2018-03/index.html @@ -41,7 +41,7 @@ Export a CSV of the IITA community metadata for Martin Mueller "/> - + diff --git a/docs/2018-04/index.html b/docs/2018-04/index.html index 2143c1014..698fdbfad 100644 --- a/docs/2018-04/index.html +++ b/docs/2018-04/index.html @@ -21,7 +21,7 @@ Catalina logs at least show some memory errors yesterday: - + @@ -43,7 +43,7 @@ Catalina logs at least show some memory errors yesterday: "/> - + @@ -53,9 +53,9 @@ Catalina logs at least show some memory errors yesterday: "@type": "BlogPosting", "headline": "April, 2018", "url": "https://alanorth.github.io/cgspace-notes/2018-04/", - "wordCount": "423", + "wordCount": "1005", "datePublished": "2018-04-01T16:13:54+02:00", - "dateModified": "2018-04-04T15:57:34+03:00", + "dateModified": "2018-04-04T17:01:08+03:00", "author": { "@type": "Person", "name": "Alan Orth" @@ -206,8 +206,162 @@ $ git rebase -i dspace-5.8
  • … but somehow git knew, and didn’t include them in my interactive rebase!
  • I need to send this branch to Atmire and also arrange payment (see ticket #560 in their tracker)
  • +
  • Fix Sisay’s SSH access to the new DSpace Test server (linode19)
  • +

    2018-04-05

    + +
      +
    • Fix Sisay’s sudo access on the new DSpace Test server (linode19)
    • +
    • The reindexing process on DSpace Test took forever yesterday:
    • +
    + +
    $ time schedtool -D -e ionice -c2 -n7 nice -n19 dspace index-discovery -b
    +
    +real    599m32.961s
    +user    9m3.947s
    +sys     2m52.585s
    +
    + +
      +
    • So we really should not use this Linode block storage for Solr
    • +
    • Assetstore might be fine but would complicate things with configuration and deployment (ughhh)
    • +
    • Better to use Linode block storage only for backup
    • +
    • Help Peter with the GDPR compliance / reporting form for CGSpace
    • +
    • DSpace Test crashed due to memory issues again:
    • +
    + +
    # grep -c 'java.lang.OutOfMemoryError: Java heap space' /var/log/tomcat7/catalina.out
    +16
    +
    + +
      +
    • I ran all system updates on DSpace Test and rebooted it
    • +
    • Proof some records on DSpace Test for Udana from IWMI
    • +
    • He has done better with the small syntax and consistency issues but then there are larger concerns with not linking to DOIs, copying titles incorrectly, etc
    • +
    + +

    2018-04-10

    + +
      +
    • I got a notice that CGSpace CPU usage was very high this morning
    • +
    • Looking at the nginx logs, here are the top users today so far:
    • +
    + +
    # zcat --force /var/log/nginx/*.log /var/log/nginx/*.log.1 | grep -E "10/Apr/2018" | awk '{print $1}' | sort | uniq -c | sort -n | tail -n 10                                                                                                   
    +    282 207.46.13.112
    +    286 54.175.208.220
    +    287 207.46.13.113
    +    298 66.249.66.153
    +    322 207.46.13.114
    +    780 104.196.152.243
    +   3994 178.154.200.38
    +   4295 70.32.83.92
    +   4388 95.108.181.88
    +   7653 45.5.186.2
    +
    + +
      +
    • 45.5.186.2 is of course CIAT
    • +
    • 95.108.181.88 appears to be Yandex:
    • +
    + +
    95.108.181.88 - - [09/Apr/2018:06:34:16 +0000] "GET /bitstream/handle/10568/21794/ILRI_logo_usage.jpg.jpg HTTP/1.1" 200 2638 "-" "Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)"
    +
    + +
      +
    • And for some reason Yandex created a lot of Tomcat sessions today:
    • +
    + +
    $ grep -c -E 'session_id=[A-Z0-9]{32}:ip_addr=95.108.181.88' dspace.log.2018-04-10
    +4363
    +
    + +
      +
    • 70.32.83.92 appears to be some harvester we’ve seen before, but on a new IP
    • +
    • They are not creating new Tomcat sessions so there is no problem there
    • +
    • 178.154.200.38 also appears to be Yandex, and is also creating many Tomcat sessions:
    • +
    + +
    $ grep -c -E 'session_id=[A-Z0-9]{32}:ip_addr=178.154.200.38' dspace.log.2018-04-10
    +3982
    +
    + +
      +
    • I’m not sure why Yandex creates so many Tomcat sessions, as its user agent should match the Crawler Session Manager valve
    • +
    • Let’s try a manual request with and without their user agent:
    • +
    + +
    $ http --print Hh https://cgspace.cgiar.org/bitstream/handle/10568/21794/ILRI_logo_usage.jpg.jpg 'User-Agent:Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)'
    +GET /bitstream/handle/10568/21794/ILRI_logo_usage.jpg.jpg HTTP/1.1
    +Accept: */*
    +Accept-Encoding: gzip, deflate
    +Connection: keep-alive
    +Host: cgspace.cgiar.org
    +User-Agent: Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)
    +
    +HTTP/1.1 200 OK
    +Connection: keep-alive
    +Content-Language: en-US
    +Content-Length: 2638
    +Content-Type: image/jpeg;charset=ISO-8859-1
    +Date: Tue, 10 Apr 2018 05:18:37 GMT
    +Expires: Tue, 10 Apr 2018 06:18:37 GMT
    +Last-Modified: Tue, 25 Apr 2017 07:05:54 GMT
    +Server: nginx
    +Strict-Transport-Security: max-age=15768000
    +Vary: User-Agent
    +X-Cocoon-Version: 2.2.0
    +X-Content-Type-Options: nosniff
    +X-Frame-Options: SAMEORIGIN
    +X-XSS-Protection: 1; mode=block
    +
    +$ http --print Hh https://cgspace.cgiar.org/bitstream/handle/10568/21794/ILRI_logo_usage.jpg.jpg                                                                              
    +GET /bitstream/handle/10568/21794/ILRI_logo_usage.jpg.jpg HTTP/1.1
    +Accept: */*
    +Accept-Encoding: gzip, deflate
    +Connection: keep-alive
    +Host: cgspace.cgiar.org
    +User-Agent: HTTPie/0.9.9
    +
    +HTTP/1.1 200 OK
    +Connection: keep-alive
    +Content-Language: en-US
    +Content-Length: 2638
    +Content-Type: image/jpeg;charset=ISO-8859-1
    +Date: Tue, 10 Apr 2018 05:20:08 GMT
    +Expires: Tue, 10 Apr 2018 06:20:08 GMT
    +Last-Modified: Tue, 25 Apr 2017 07:05:54 GMT
    +Server: nginx
    +Set-Cookie: JSESSIONID=31635DB42B66D6A4208CFCC96DD96875; Path=/; Secure; HttpOnly
    +Strict-Transport-Security: max-age=15768000
    +Vary: User-Agent
    +X-Cocoon-Version: 2.2.0
    +X-Content-Type-Options: nosniff
    +X-Frame-Options: SAMEORIGIN
    +X-XSS-Protection: 1; mode=block
    +
    + +
      +
    • So it definitely looks like Yandex requests are getting assigned a session from the Crawler Session Manager valve
    • +
    • And if I look at the DSpace log I see its IP sharing a session with other crawlers like Google (66.249.66.153)
    • +
    • Indeed the number of Tomcat sessions appears to be normal:
    • +
    + +

    Tomcat sessions week

    + +
      +
    • Looks like the number of total requests processed by nginx in March went down from the previous months:
    • +
    + +
    # time zcat --force /var/log/nginx/* | grep -cE "[0-9]{1,2}/Mar/2018"
    +2266594
    +
    +real    0m13.658s
    +user    0m16.533s
    +sys     0m1.087s
    +
    + diff --git a/docs/2018/04/jmx_dspace_sessions-week.png b/docs/2018/04/jmx_dspace_sessions-week.png new file mode 100644 index 0000000000000000000000000000000000000000..3d91f0b728c95f3bdfdefb9e10d645dee9a1cde8 GIT binary patch literal 12075 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 - + diff --git a/docs/categories/index.html b/docs/categories/index.html index bc43e5959..5aeb33660 100644 --- a/docs/categories/index.html +++ b/docs/categories/index.html @@ -26,7 +26,7 @@ - + diff --git a/docs/categories/notes/index.html b/docs/categories/notes/index.html index bcdde0f1d..27a1a0347 100644 --- a/docs/categories/notes/index.html +++ b/docs/categories/notes/index.html @@ -26,7 +26,7 @@ - + diff --git a/docs/categories/notes/page/2/index.html b/docs/categories/notes/page/2/index.html index 33f67a914..27969f47a 100644 --- a/docs/categories/notes/page/2/index.html +++ b/docs/categories/notes/page/2/index.html @@ -26,7 +26,7 @@ - + diff --git a/docs/categories/notes/page/3/index.html b/docs/categories/notes/page/3/index.html index 005ff7452..3899c7dbf 100644 --- a/docs/categories/notes/page/3/index.html +++ b/docs/categories/notes/page/3/index.html @@ -26,7 +26,7 @@ - + diff --git a/docs/categories/notes/page/4/index.html b/docs/categories/notes/page/4/index.html index bd382a091..3c89c270a 100644 --- a/docs/categories/notes/page/4/index.html +++ b/docs/categories/notes/page/4/index.html @@ -26,7 +26,7 @@ - + diff --git a/docs/categories/page/2/index.html b/docs/categories/page/2/index.html index 02c92e94f..39e2b3b45 100644 --- a/docs/categories/page/2/index.html +++ b/docs/categories/page/2/index.html @@ -26,7 +26,7 @@ - + diff --git a/docs/categories/page/3/index.html b/docs/categories/page/3/index.html index 9091180f1..9c10d24c0 100644 --- a/docs/categories/page/3/index.html +++ b/docs/categories/page/3/index.html @@ -26,7 +26,7 @@ - + diff --git a/docs/categories/page/4/index.html b/docs/categories/page/4/index.html index 6de1ad70b..e81ca1015 100644 --- a/docs/categories/page/4/index.html +++ b/docs/categories/page/4/index.html @@ -26,7 +26,7 @@ - + diff --git a/docs/cgiar-library-migration/index.html b/docs/cgiar-library-migration/index.html index e58f9b9b3..778a3382d 100644 --- a/docs/cgiar-library-migration/index.html +++ b/docs/cgiar-library-migration/index.html @@ -29,7 +29,7 @@ - + diff --git a/docs/index.html b/docs/index.html index 5b1a32c7b..71f2353c9 100644 --- a/docs/index.html +++ b/docs/index.html @@ -26,7 +26,7 @@ - + diff --git a/docs/page/2/index.html b/docs/page/2/index.html index 5756e25a1..7fd9322cc 100644 --- a/docs/page/2/index.html +++ b/docs/page/2/index.html @@ -26,7 +26,7 @@ - + diff --git a/docs/page/3/index.html b/docs/page/3/index.html index 1b3e779c7..540e37b9f 100644 --- a/docs/page/3/index.html +++ b/docs/page/3/index.html @@ -26,7 +26,7 @@ - + diff --git a/docs/page/4/index.html b/docs/page/4/index.html index 2411236c4..b0e3b018b 100644 --- a/docs/page/4/index.html +++ b/docs/page/4/index.html @@ -26,7 +26,7 @@ - + diff --git a/docs/posts/index.html b/docs/posts/index.html index 8e5d27ba6..dad2e113d 100644 --- a/docs/posts/index.html +++ b/docs/posts/index.html @@ -26,7 +26,7 @@ - + diff --git a/docs/posts/page/2/index.html b/docs/posts/page/2/index.html index bad683ae1..f2cffc251 100644 --- a/docs/posts/page/2/index.html +++ b/docs/posts/page/2/index.html @@ -26,7 +26,7 @@ - + diff --git a/docs/posts/page/3/index.html b/docs/posts/page/3/index.html index 715587427..8d5607749 100644 --- a/docs/posts/page/3/index.html +++ b/docs/posts/page/3/index.html @@ -26,7 +26,7 @@ - + diff --git a/docs/posts/page/4/index.html b/docs/posts/page/4/index.html index d75192745..85cef1a46 100644 --- a/docs/posts/page/4/index.html +++ b/docs/posts/page/4/index.html @@ -26,7 +26,7 @@ - + diff --git a/docs/sitemap.xml b/docs/sitemap.xml index 06601e0d2..7d8e06ab1 100644 --- a/docs/sitemap.xml +++ b/docs/sitemap.xml @@ -4,7 +4,7 @@ https://alanorth.github.io/cgspace-notes/2018-04/ - 2018-04-04T15:57:34+03:00 + 2018-04-04T17:01:08+03:00 @@ -159,7 +159,7 @@ https://alanorth.github.io/cgspace-notes/ - 2018-04-04T15:57:34+03:00 + 2018-04-04T17:01:08+03:00 0 @@ -170,7 +170,7 @@ https://alanorth.github.io/cgspace-notes/tags/notes/ - 2018-04-04T15:57:34+03:00 + 2018-04-04T17:01:08+03:00 0 @@ -182,13 +182,13 @@ https://alanorth.github.io/cgspace-notes/posts/ - 2018-04-04T15:57:34+03:00 + 2018-04-04T17:01:08+03:00 0 https://alanorth.github.io/cgspace-notes/tags/ - 2018-04-04T15:57:34+03:00 + 2018-04-04T17:01:08+03:00 0 diff --git a/docs/tags/index.html b/docs/tags/index.html index eb0a9919d..eca4adf9d 100644 --- a/docs/tags/index.html +++ b/docs/tags/index.html @@ -26,7 +26,7 @@ - + diff --git a/docs/tags/notes/index.html b/docs/tags/notes/index.html index f4f016301..036659c15 100644 --- a/docs/tags/notes/index.html +++ b/docs/tags/notes/index.html @@ -26,7 +26,7 @@ - + diff --git a/docs/tags/notes/page/2/index.html b/docs/tags/notes/page/2/index.html index 9df6ade1d..a5a339e9f 100644 --- a/docs/tags/notes/page/2/index.html +++ b/docs/tags/notes/page/2/index.html @@ -26,7 +26,7 @@ - + diff --git a/docs/tags/notes/page/3/index.html b/docs/tags/notes/page/3/index.html index d49aaa68f..ee89ade19 100644 --- a/docs/tags/notes/page/3/index.html +++ b/docs/tags/notes/page/3/index.html @@ -26,7 +26,7 @@ - + diff --git a/docs/tags/notes/page/4/index.html b/docs/tags/notes/page/4/index.html index 4b0863b6d..f20c1f1b8 100644 --- a/docs/tags/notes/page/4/index.html +++ b/docs/tags/notes/page/4/index.html @@ -26,7 +26,7 @@ - + diff --git a/docs/tags/page/2/index.html b/docs/tags/page/2/index.html index fefdbe87e..5341b51e2 100644 --- a/docs/tags/page/2/index.html +++ b/docs/tags/page/2/index.html @@ -26,7 +26,7 @@ - + diff --git a/docs/tags/page/3/index.html b/docs/tags/page/3/index.html index 23f2ea6eb..5d8780725 100644 --- a/docs/tags/page/3/index.html +++ b/docs/tags/page/3/index.html @@ -26,7 +26,7 @@ - + diff --git a/docs/tags/page/4/index.html b/docs/tags/page/4/index.html index 62d597d52..2dbc0376d 100644 --- a/docs/tags/page/4/index.html +++ b/docs/tags/page/4/index.html @@ -26,7 +26,7 @@ - + diff --git a/static/2018/04/jmx_dspace_sessions-week.png b/static/2018/04/jmx_dspace_sessions-week.png new file mode 100644 index 0000000000000000000000000000000000000000..3d91f0b728c95f3bdfdefb9e10d645dee9a1cde8 GIT binary patch literal 12075 zcmYkiWl&sQ6D^Dd3!dN>Ab4>1-~=bQTY%v1?l!o)ySqCK?(QYl1o zb!zX^Ypw2HwfoNwSCp4TMJ7Oof`UT*B_;M73JUt>-^+{$`)?&yqg4+I3KmLHRz>{! z`g(6~Z?h`T$;rvo)D&t03J3&#e0<#X^lWWyZR|YkH6|An6j)eToS&bcoSf|M?_XS8 zpiiSi-XReY5hEibXJ=>jAp6zTRVyp2iHV7^v9aOdVbVEL2L}i6JJ`d+!}q{9H8nLo zJ^k|X(%aj6adGkJ^~l=V+Ro0-)6=u?qEKa1g?Ntm`1p8WVBq2HAu=*@W@hFFa)UCB zVrglqu%WQ9uyA#C6%Y_`dU}dAgGDw^)_L1$ykp$l+?#w#{%x0#t4 z;uK=RML}|Ma@l2B({)qqNi6m(HuDm5TU%R5NC?~{Twq`z?E>xl$9r8}-R$Em;T&P< zW$ECbqu59(NL# zc9!OI-~&E8Yrbh-Sy{FyFu3 zH(oc=x6_xFmIfUKB_t%+?%6IsEh}adoi;U{gU^3<|6DICPOdak+ECKWrCe<<3MiAm z>~62Ptf*bA9c@X9uFx798shBY%&E4VY0aprb3f^7DxEK#TA#{2&kddk-s`NkFA}gG zu|7*q9&C#BERkH=TxwZrQ5{e<1{!xZhUsnV9i7~rU)=0~?pL=S^@sGO`=sNh;}T91 zdRBVUXVYU&Vpf;0N^70G$GuO_Z&%uw}XcX!utx(gMC1txFC!<00=0h*;5MUMXV0vCergm7)oT$->akH zql0w=ke}57qKkrgtF;gGRE;m*>+Yu2E=W5ZRW58Uw%4;ReULB`oT&3UMz18XiS<5i z(@*t%U*ERCkDgH&c>m9nDpg#Mmx*vB;Wnxc$fdvznhPZ-so*L+{quz=-(qU^&VQj~ z;g0Gfe@-f;duZ78RkD+wP9|@D9C0|a-@$}lq~dkj9Clq==M{%^`-Jo+Lgi)CPhnDI zBnR9RE@3RvhLb15gmvhoct4y?M{glU15R%H>w*Rf@NVlLDZoGE?aZTFOeTzSq7=*G zG0q{m!uPd0{0UzBE1&3;L^bA!AmZ_*I(7ZGswpi!+0%{6U%453PtW@ljx<<233UBotT!U);~ z#VwIiPejVlG?GWZy0+56kI{@vrO31yOT=F>RcMRteWh~xeezgGGxcC&F;~KvxSVC@ zA84IM+NZX51blVYr@wFUzstjTUkvdVblDrj#?COt5REVQ;S66AI&!qV+WMdPuw;2V z$x@kSlQ7POR|I71M>xke{8hs1I3`f}N>GOIAM@&obXZy_CyZk&JnM<|``EZAa+kwt;8 zH_TM(Oy-He+s>4shEg%9JzU<;Xme@Y*c9D3K^3;6HViG6t#I{a+PmAJw2Uu*eF4pYj-J)8yvSGDL#Obw zF}gB?PfUtz*$i@QGE%gY7)~Z?hZ4fY8xJmbjt{nNaP9_ zB?HyGCLF@XgAJUck3Qk`un$>Dh#7auTr;w_ zVr;hv#yr!#p|kXQ7{xuw+gU(W%~tR5mXQF-3S5mwmzE@I>fcbZa2V2O3&*^sgTcuD=+x5%m>!1UCh_w45~{JEPYltgr2hCnr}8TYWlV9vewRICrYkgmN2iQq`C9P@-{c zMGZA1z<7{7*~N1QDqe~pNW{UJ8WRENZ_ljR0_ttOIymiZ&BTAI6hs5ar{V(dQU#^aW z^E9BXDFL-NS0SoGh;rRuxDF53MCXm84Ib}nqNRKU*_q94pmzoqhkevAvxbger+t+<29X{=wa;V1IvgIlMf!1#q=iKgJ@DkPe zy5U+t0gVl2`zCCEcpy|7vp1?U>D4-;qKm}r*#AI~jKTgJc`L9eY`{V|S&b2ioUaY!7>FHc*^(+ zp{cY8mKLs)#ok;*z&fFcfETwFGH~%~IU63HGC$^vn`tW-{*_!CJW51g>rqaaUEGZ| zI@nJ*#{>RwYwMpx4bbTq@~uTBm4(@Vr3vMPAmAmAY|O>i?d{!BZY@o;BfwJ*K5K+4U;Gd*;lK-K>t=o-{8z;bH%oIRCG(1T`-dcz z!5HM_sdPz3n85nfgn*`oh~YsH^6r}Eh3mBNCYCTC=;IHC>4q3fHjNJ7xHmp5igbW| z|7a@V(iEVT7`HI12%Ra=MUA|z-FRRPKdXZ9AM*ptKyNM{z!LogW=Nx<&cBlz1tp@l z^)a`bn@%<8XmS1QP66tl^L&o6oO7ZbuH2o40YY*g+cE}^d9HmrRvfj z!SYOhIax&Vf~Bt8DQ0Q$X1HEWEiavuDW>hAv#maHo1-)92NbZY5e*Ri6V~+K zGO?ROXUg`&D+&_={GlO`q7e>R_L>#6NReX&az(u&Q-B2}c$-Ruwoba8pou84jgJHL z$2+>CwjbIBx!`lNtYSv^Y}l$xe@UgPo|^z&v)g=PwmEv(UmOj*>Zc{fc^_EaxNZ&} z2)V91QgI)xVe>D(i@8yX?E(}=AvcigD$&mBmss8Pf~=QNjkU&;0XM08*^>8{KTT^L zYiXf}$$CUK_>aZz;)qLA z*-Vye<7er%r)r_0d^fgzS9)nAfEJCVT;Gx8+b9rBE*e*5xb<4bnmR_41G@fmH zdg$Dxy!rIJ@hRGym$=ECwNc)oW#ElrUo@VdZI2Ta-NaT|_?=|H)meh!peXC@V2@Pr zpa@mfx8!jgvR3E2U2$q&6#URN=6byS;&~ghzueW?$mV(YA4{39d(bblisV}(e*TX` z(G()le8Np!+@PnE|4}$k%I1hU^a(jfuVYKVj_>k;X8r;$Sz%YEuXmhL25 z*Ba@t#ffg`T61h$5!Wkneim=lue357qitJW5myn`gmaUdef9Ga1O-Dw3-I##Y4N5QbOM+s%VpY-3S+id&^Q7)c|Hc!1bwpSs7Jm!-)mpM? z3BanzgL;_ZN_@W5^Q3UXK|AMod+^ba{WLF<&>`LQfYW` z*Y3yz*wNYmbXLr&2k$$@4E7#<`qMaL)wk6<6bxH$49(6FokPDIcg-}UT8LJ)#Nnm zVc)vli>od4j)!%`wC|!vdlwD#B}BDz;5j3ExlKOnaclfT$bK1TO~NJQi7XW4FPNxg zm<`XSuttsqhvgARiGh_K8u2>_11n$!T|`6zSJ}`Q-=a&SKoE~iA6cR)ip9o@Oz+Ef zug%_f4tYB%PR-6(_Ka97DbCSD%8rbnOHr9=xt6*@)jxBm!X#0?QKnNbJs(~l2br*r z2GzIs&!Y+{{oLbv&vmL4>C6M4Tl`Bo8x)#qIHpf^THAx?k!M=o2p^@bN|Rixw4z=u z0PF#PL=vEZ-Lg>HX|Gd1vQL9cPkGaehXz!N&=oR5<)#v3dyiyMhp z$_j9oW_unQbk;M*V`h_I$^{Zb#JmAjd$PARZz*;+VxC|U}!0)l}B|zqlW3@(}`s zUbwe#Ie_UWojW^q2ZsUv22eQEH$*CoVmEN!+B=3>5LE-lxz^8;<;M0bNu-%xa8JP1 zl4j5Iw&rZ;Z2s@Ay5(-{4P ztpl}nVKP)9kt2SC#p`Vd!PFZaCXZ#09B0#vd{}{Gm8tIG{M;7BE=%8IPpYutlbq zz%I;$j~Jn9J(-s1pm-<4g)d7nxp9H>=}A%e4jBx050$^(q&<-$iE($lfT&_$P|@qKCgrhkl0V5S?8N~ERE8X3vzr>Z(6m!?5%TpPlrmlFXsj$p{;ht$jvJm4 zqD8%Xy-)ct=^TBt#0OH@J3aDwS{M4bpja|l+@K?Dgd1@fQl$K&RdY9JP62Hk&3Q}^ z-Q&3U@F@|tqhcZy<;uYBvt{5o2i_iXP+$1v7WBz4nF+dl98&7H_yq>Kv>`0s?a7q4 zjN;THW`fy)%mh(Wnwo-QEry<{{34=LeIRRzeglVMa&M5-E>S?s7Ji9o@otUpLq?27$^)%iInT^aLFf(-Kcef&B}aURz2DXo z^7HfhH=mD?;j0gPGLV1cu3MB-jis02sKD3-ylpSWKk-rr8zc%;&7>Cy3424*UW0t_IAU z7R*!Aj@pC#I8^6x;bvir&RqSilhoX-^RV2)eLPqoK4In~VNs#b(%s7_H9XhAFVdmd zdfEg7skc>%JLLxj6I}Z{B5B^f&uN;+?@q!DJxDZVfkM;Qoxca5+tYMQM@VgYht=kI zqs6eq&RDi`KK9!hrUk(RLhmasmlF$Ys8k{L+Q&bwGy~E;%dr{`4vA!!&N*($f@Lve z1qkwz6~MT(4f?33v$FV}p0*vWkEWcyx#|)OfHAe3g>8}ss(;Yi zl`gyQ8PRs0!`o`U1umV!#au*kfa)XB_6Nklo_J|N;BNt0>d_%tRF~I!FW5%TeagHw zqnQRKbr}hYDe%-R2mPgAG%(S;sb^?4fP{t{3kBcW-Shx>dUdtQoY>$1(VuLsCyfLg zKrVBX+NXBrGXsjd*_eSw8(|NM@&hinW}TA;@za8tJ57u~E>+|)trO!==EQnPfe#)4 zrcb=X&-i8poIaXH<3@R;6M64^O!8MheUQ~AJcy?SzDF=<56|UV!3437=#>=>ags)I zknK}!d12n~nU16*Jwy~UF!LGg6PJYF+fM)zY%#@3WkamH&@GHA#4}TW(tYRtjLKy& zPsY63%egY8TAF1wV~~5Jd{7(PjurX`hI}0YgjXmC4MuA5-&;vj8$O|mv@+~~Al@mJ zR>9t6TBIQ9c1QdXUnmWH&oYJp*ibvlyVR>DXHvHda~^p7#WpU^Sz{cx8s2^cVN?YU(P?*W2Nw2$d?`6dp;yhf=!#_L_(GM722p6!Gn0o=RP_Hyr0*Y z|L4!KM(&?pdbNr5$M23EGR9#+Ep5nJaiqf!;}>0gmy4r3myqs96<;!0JkBH-m=FigE99i# zIHU|WMo?D~vbiwgW*G4Z;J4N$t*dg%AFfzJgn@%R~+hpTmom&30!WB!^2r$*F^e3xQYHc|NP=ayk zKsHSdUurxdknBLZ!S7D~uaD7JL4BWc+$9>Z5I_7O*iNxezT&)M@@)!s>^F^<4GD1Ap|e z;6vGm1z0gxK@67w^BYbRMEOeoP9mj$Y%p5z|3MH3hxcpUy#d9Q6K1{Ki_pjymBP{_ zpyJJUxfcLSy(lU}$J$aJ=48Gcbr;PUG$D+~cC~K~seJPqU$o3_&39n=_nV-P( z^OY>u?29*Z>UZ4!7bmTD)-zkJ(2yUOW67CH3wTefUjsMTC3l8JJra2jAH&t=l}LFeI`{c1DZk(EzIcyB6J``;1P$$y%%~^VZZQ1HkJX)MkQ``sXnQ|2Y0 z33Uoc7v&hi4<-z7GDAE8RX3GeY6h{d}0PXTFRRD zzX0T}Ky%1O#Z;ZH|1n8@%EP+%uO+x(9o5t+R{M{1PZM(!La-D zyC@SPW9tuYa2L^7@@6PCEKV)SPCf(Maj2)X-*4PTT>{Rn{l0R6-wt$!uESF$;^t_Imf3sF|kH=*&n!&`q4>(szVZ{l}34S-K02g@*iPo#+`HC z+@#eW!D1?ijRkx@6SRvVk6sGkUrA>Y+_TYOjmTT{UgF%hPfz7uV=8lWe{jGbl*!V8 zLo>hWQqlXqwQktwWD&!OkZ=+rd@jl;N08R#S+`~#dE#qXMOJD3JTLdT=n2+IP(BIn zGbT#MZ6&Q>dd63Vs%q>RhREc1?MenzdBrbpEif&>>iumF{Sw=T*)y6exPD7&YTp>O z4EGupNqw$uU(J%7LYv{k&>M~U1@G&!y>j~nkA(K}-(dGHS}XpJk_8L#KH|%*x!Ky` z^QM;ViXJYP7_d*duk=1`$DD`w`+CCFX4eZRp89|{bFSj3z)!ysn zth{wo>GJB?wH~kTBn@stcQ^rq>e9w{09S-(&krq&*djw5#T3^>)y9V-`pU7&ux51m zK}WQ_y9wb>M0Sg=ba3Z>Nc)x-CGH&X5F?$7ey?gHnmW0tZ3`hNjz6{PZPtN_E%H(x zWhLKx6dTIwIdr(}9N_t7RX!o>$2!9n+2ktJLz6~7zXg4fXHaqVV&~FqR2g)m(V`3Q zgC|`%0Lm2$wZf=TwxP7Jre)rGiBXK&<8j*kR!Pz#)|5ou+{MF|Q>~>gU(6C-&XzC! zR=!k*e-2N~-T=ec6YPu-%umV$xIpYmb@{nko^tY$fRkE=2N$7bAU1vG>ouitex&M6 z?U6=TR>1SA5v}yYes)8|TeAosU0jB;4y7Xv*Kf1<{E}y}*>Bh(0Ax^kTTQ^UBW+MwmgaD5HW8rFX=jLU}qtQL9eVSC~{&v`RaKK{-w_&CWi!d?6Co(J{Q2eja zQ15ir*VM3arFxOL7)hgX;%uB#0D*Q()lVE%(cA)Cjvz6+d!p;({oGE1T^h&XBT20- zbYTNY`_;fTQyq78^-TM+`vir<(tMwiW-9*?q^jL`4;9%Lg3KvigRau+<=&R^PZT^n zuouepeyFTK28dvFo?uqOA>>JIs)#6uzd9Q1#Q{3ySD@znOZc*~Qkd1xODltco4w2CbI0;BIov6K0j%2IgdoDYjJk8VYSk^5($wbv3P z5Q?dn+|?ugWUKgyj-y*_l8gqH_7ogIzC??fng=yi07+OX5PgJ#F_P?Wb8DQXxW92ER<}j2035)16jr9Zycs(C@?Zt6$*9(l7uEPPGTT^8S^1 zM0&nhj~3M+qu`r`#iA8W+pW1h?>M%pU8nCV_#rrD=r zWp2-KSfU1vmJ4g5sd<^|L}Xceu{f(s?*p_iB#3oY4V!aob|IGavY!?>NWVhxZh%th ztKw%HGf#Y8ORz3alAz452ZGG?bcG8{LTpuY7<3VnR1A@GWBHTec!>Mn`WqSc}aIAcr(<4452I-mEPIK%+Hp6iE`UM8(Z=auEUwii%PpV$7o z3*ez?VcW=<)sB^Bi!FY+ftIAQ=csTf7EPf>U?V-c(!nNOM7C^>smy8!F}z#sT3BX* z$Hf3H-Ysrg;Ych~1ltoBUt3HM=6d#e(aNr1f+K7E-WhJd8rj2#ipSatNu;9S0!)c$tALLcsqC zu_xjiz{~k{E_+JhZ*2CN5R}K51sBfpPGg{h!vj^IrpJRq+{bGy$ z_ZtC-uw?vSsP;;`hsHUew~p-}aFDkRUf}-=J`uwbjbu!8M-2t~-KpZzNd|o8A9~(? z$C`F4`(YQsBB;RPvp=FAxrZwghf8b(m{tIgLf;>?4#}AKD+fH^ha=<&Xf(Rb?tL)o zeSP&r+Pw=+6=H#q3O=8g*r(m3;xT!^yo0+lTQGL-z^Oupkek)TBDWKuxdYMrT_z;s z0Wl|M0D=UHi8-Vil6gUoV|$NSI_nB}IZFI6JXVI8FOci(V{AesSBp)ff$Ty52!p`Y z>5l+~LFifAp+NnGq)jP{&UYY+KC2Y2Abh zYQ$R&iA!9h`d3Sqmta^8jF)-Gr<;VZ5d|B)aZ)_LksRtjH+eBRE03x0?`FLK(uLj} z7*j7ktdH}AzqOwk0C>Kk4ua7xxFcj&RgH!M#J_sJu%E zGZ*ORJnMwO`-GK!m0Q+-Z%jU#gvXnn=X{TG{6FbiVKyQmXE9_TIw+im?3E5%-uzd= zQbh3L8fTyT_8}6v!7}do=%@M-gKM6+BFhGWx)bRxF#jv@PDx6neZ#BPcN{(1JA3;zrVkTd_T-l z_TdM)0a**qn>>3*F0+3y23y^eRW{GYSyD>4zTYq9O* zlq@YTzMkrLYn)g^!%k|o81$T#0Bd~X-+bQ%3fT?L_v?o+t`Rheq!EMmYqgQ#bBJJg zzWWaf9IfbijPaz9z;Sh6{Ijg@oCS)yubif~Sze6AjTtx<7utYs>h z3We z3Q`Z&ac*;Xm*3BC7-4va&fCMbMDI64dN3&ub!tL9SeKpepFL4r$=4kD9ir(^=H-+~ z&m(PiVWgA#FXi|HAmh!X?XUzG=w)?m6%UwB)Kb~mH(il%c%+9HF$fbT+q*Se#DXJ1 zE<8(;B_B49!%Sk{wKWwYt4%Tk8vB1!yfrPk0{6%k3pqty1NO`C6~u;C8=fEN=j^Rh zx;&PzM&00CE>fL0J<#>)Y>>AR?2R28_ zP|eu`BY!-PW%Z$C&g0W`GGK|Ne5}1a?oq|?6`f_u535Yw6u|>HXNc#Hnp2&|x8C#3 z+9J6%qKVw-$PR9mrA`fsMw1rcT*(F^h@Nj;hTi}G=BDvu2g;MniZ+kMl@yiZA~cBgyq%xkPHPCR$P#*mA$n)Gof%{>A3KZ4wU;t9Dx?YeK&=@crEQh>rv zPx4!l7XUzkfjF2SeY5f@GT4_pfBs>xmf6Mm=LkbKmgwY*eTPS?ePhK3kyDEs0jAZl zyI1+Y%+2Vw@JfbJG5-z%7<7lpR~Mnj7)bb6hOX`>0J;K$+{!oh<0N%MP&j`FA>Lm8 z=ciDc4B4Kwjw}tv>gcRfS9|8~Uw)9!APN)bph35|9riIgd6}M{3IktsiJXXFqEgMg z49`#fa<%#I3=mk@tkpxo+;9YWA$p}Vhcl5z>Q6^U-T(hygSEQkKQq9=_-hdD?DdN{ zNae(4__!Vt4N%}pdu;8d0Huj$D|7^}DTV#n?$a)Wahq^1 zl?;kqzLlKxBmaZ?FdfFPl7NMh;MkOt^iaEy+rv*@o?vwYrE>@Cuj*%iS=qB#FUgwC zv(LlRoV6D8x>Hah@(+R@11M;D@HRk$>n7P3?`l>AT^A?cfyXvJP!-lq=UGn?rbOo7G0xu=B z{3~CbN8+M