Tasca #1110
tancatResoldre els conflictes entre els robots i el backup nocturn
Descripció
Més o menys un parell de cops a la setmana, rebo un munt de missatges d'aquest tipus:
The following problem occurred on <http://ddd.uab.cat>
>>> Registered exception
2011-02-18 05:28:16 -> OperationalError: (1040, 'Too many connections')
>>> User details
agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) Speedy Spider
(http://www.entireweb.com/about/search_tech/speedy_spider/)
apache_group: []
apache_user: None
email:
group: []
guest: 1
last_login: 1970-01-01 00:00:00
nickname:
referer: <>
remote_host:
remote_ip: 88.131.106.7
uid: 0
uri: </record/53068?of=XT>
>>> Traceback details
Forced traceback (most recent call last)
File "/usr/lib/python2.5/site-packages/mod_python/importer.py", line 1229, in _process_target
result = _execute_target(config, req, object, arg)
File "/usr/lib/python2.5/site-packages/mod_python/importer.py", line 1128, in _execute_target
result = object(arg)
File "/home/ddd/lib/python/invenio/webinterface_handler.py", line 298, in _profiler
return _handler(req)
Traceback (most recent call last):
File "/home/ddd/lib/python/invenio/webinterface_handler.py", line 316, in _handler
return root._traverse(req, path)
File "/home/ddd/lib/python/invenio/webinterface_handler.py", line 210, in _traverse
result = _check_result(req, obj(req, form))
File "/home/ddd/lib/python/invenio/websearch_webinterface.py", line 311, in __call__
(auth_code, auth_msg) = check_user_can_view_record(user_info, self.recid)
File "/home/ddd/lib/python/invenio/search_engine.py", line 213, in check_user_can_view_record
record_primary_collection = guess_primary_collection_of_a_record(recid)
File "/home/ddd/lib/python/invenio/search_engine.py", line 2370, in guess_primary_collection_of_a_record
dbcollids = get_fieldvalues(recID, "980__a")
File "/home/ddd/lib/python/invenio/search_engine.py", line 2431, in get_fieldvalues
res = run_sql(query)
File "/home/ddd/lib/python/invenio/dbquery.py", line 231, in run_sql
db = _db_login(relogin = 1)
File "/home/ddd/lib/python/invenio/dbquery.py", line 110, in _db_login
use_unicode=False, charset='utf8')
File "/var/lib/python-support/python2.5/MySQLdb/__init__.py", line 74, in Connect
return Connection(*args, **kwargs)
File "/var/lib/python-support/python2.5/MySQLdb/connections.py", line 170, in __init__
super(Connection, self).__init__(*args, **kwargs2)
OperationalError: (1040, 'Too many connections')
Els missatges són entre les 5 i les 6 de la matinada, i quan passa, el sistema envia entre 500 i 1500 missatges amb errors com l'anterior.
En aquesta tasca anirem apuntant quan passa, per veure quina solució hi trobem:
- 2011-02-17 (dijous) de 05:10 a 05:26
- 2011-02-18 (divendres) de 05:21 a 05:28
- 2011-02-24 (dijous) de 05:22 a 05:29, 190 missatges
- 2011-02-25 (divendres) de 05:10 a 05:26, 3631 missatges
- 2011-02-28 (dilluns) de 13:13 a 13:15, 98 missatges
- 2011-03-01 (dimarts) de 05:26 a 05:28, 54 missatges
- 2011-03-02 (dimecres) de 05:24 a 5:28, 54 missatges
- 2011-03-08 (dimarts) de 05:12 a 5:29, 2663 missatges
- 2011-03-09 (dimecres) de 05:12 a 5:28, 2344 missatges
- 2011-03-10 (dijous) de 05:18 a 5:29, 1742 missatges
- 2011-03-11 (divendres) de 05:10 a 5:36, 2873 missatges
- 2011-03-15 (dimarts) de 05:13 a 05:21, 537 missatges
2011-03-16 (dimecres): canvi del backup amb el gzip en el moment del mysqldump i al /var.
- 2011-03-20 (diumenge) de 05:21 a 05:31, 288 missatges
- 2011-03-22 (dimarts) de 05:16 a 05:24, 2222 missatges
- 2011-03-23 (dimecres) de 05:11 a 05:13, 108 missatges
- 2011-03-24 (dijous) de 05:20 a 05:31, 600 missatges
- 2011-03-25 (divendres) de 05:19 a 5:31, 672 missatges
- 2011-03-26 (dissabte) de 05:20 a 05:31, 662 missatges
- 2011-03-27 (diumenge) de 05:15 a 05:31, 876 missatges
- 2011-03-29 (dimarts) de 05:15 a 05:31, 814 missatges
- 2011-03-30 (dimecres) de 03:00 a 03:14, 993 missatges i de 05:21 a 05:27, 1710 missatges
- 2011-03-31 (dijous) de 05:25 a 05:31, 269 missatges
- 2011-04-01 (divendres) de 05:17 a 05:26, 580 missatges
- 2011-04-02 (dissabte) de 05:17 a 07:12, 451 missatges
- 2011-04-03 (diumenge) de 05:15 a 05:31, 919 missatges
- 2011-04-04 (dilluns) de 05:14 a 05:31, 1237 missatges
- 2011-04-05 (dimarts) de 05:15 a 05:29, 797 missatges
FJ Actualitzat per Ferran Jorba fa aproximadament 15 anys
Si no trobem cap solució alternativa, sempre podem tirar de l'opció Visit-time del fitxer robots.txt, com aquest exemple a http://en.linuxreviews.org/Robots.txt:
User-agent: * Disallow: /trap/ Request-rate: 1/5 # maximum rate is one page every 5 seconds Visit-time: 0600-0845 # only visit between 6:00 AM and 8:45 AM UT (GMT)
FJ Actualitzat per Ferran Jorba fa aproximadament 15 anys
Estic pensant que això potser es pot solucionar quan fem el gzip en el moment del mysqldump. Hem d'acabar de pulir-ho a Nuix per després replicar-ho a Homs.
FJ Actualitzat per Ferran Jorba fa aproximadament 15 anys
A part del gzip en el moment del backup, probablement canviant alguns paràmetres de Mysql també podríem solucionar-ho.
FJ Actualitzat per Ferran Jorba fa aproximadament 15 anys
Al DDD de proves ja fem el backup de mysql simultànament amb el gzip. El temps de backup és idèntic, tot i que jo pensava que seria menor. En tot cas, la base de dades de proves, com que no inclou l'índex de text complet, és molt més petit que el DDD públic (938 MB en comptes de 1.7 GB); potser en l'altre hi trobem millora en el rendiment.
FJ Actualitzat per Ferran Jorba fa més de 14 anys
Encara no hem trobat una solució, i temporalment farem aquesta. Donat que l'hora UTC és dues menys que la nostra, i que els errors els trobem entre 5:00 i 6:00, que serien 3:00 a 4:00 UTC:
User-agent: * Disallow: /uab Visit-time: 0400-2345 # only visit between 4:00 and 23:45 UTC (GMT)
FJ Actualitzat per Ferran Jorba fa més de 14 anys
Això del Visit-time sembla que els robots de Google ho ignoren, i recomanen que el servidor retorni un missatge d'error 503 (Temporary unavailable):
He fet una modificació perquè retorni aquest 503 en el cas que ens ocupa, però no estic segur d'haver-ho fet bé. Ens esperarem uns dies, a veure si funciona.
FJ Actualitzat per Ferran Jorba fa més de 14 anys
- Estat ha canviat de Creada a Tancada
FJ Actualitzat per Ferran Jorba fa més de 14 anys
Funciona!
CA Actualitzat per Cristina Azorin fa aproximadament 6 anys
- Tipus de tasca ha canviat de Defecte a Tasca