четверг, 28 марта 2013 г.

OpenX slow page (workaround)

Обратились с проблемой - мол, тормозит OpenX, но не весь, а только несколько страничек. Конкретно, edit-zone.php. Страница открывается, но через минуту ни больше, ни меньше.
В логах самого OpenX наблюдаются такие записи, при попытках перейти на вышеуказанный урл:
"RPC server did not send response before timeout."
Стал разбираться. В логах httpd ничего противозаконного, nginx (frontend) показывает время ответа от httpd (backend) в районе 60 секунд. Возможно, таймаут какой-то. Ищу в php.ini строчки со значением 60:
$ grep 60 /etc/php.ini 
*****
max_input_time = 600
default_socket_timeout = 60
mysql.connect_timeout = 60
;mssql.timeout = 60
apc.ttl=3600
****
Меняю default_socket_timeout на 30, перезапускаю httpd, открываю страницу - теперь 30 секунд задержка. Логи OpenX что-то говорят про XML RPC сервер, который не отвечает на запросы.
Ищу timeout в php-файлах проекта:
grep -ri timeout *
****
OA/XmlRpcClient.php:            ini_set('default_socket_timeout', $old_timeout)
****

Среди огромного вывода замечаю вышеуказанные строки. Открываю файл, немного изучаю - curl пытается отправить запрос на какой-то сервер (что за сервер, что за запрос непонятно).
Пробую выяснить - вношу в код:
file_put_contents('/tmp/123123', curl_getinfo($ch));
Т.е. записываю в файл /tmp/123123 содержимое curl-запроса, верней его часть. Узнаю, что запрос - https://api.pc.openx.com:443/api/public/v200000000000000-1-100Array.
Он не проходит по таймауту, пробую локально, пробую из браузера - не проходит.
Ставлю "грязный" хак - curl_setopt($ch,CURLOPT_CONNECTTIMEOUT, 2);
Данная страничка открывается 2 секунды вместо минуты. Вроде приемлемо. Вот такой поток сознания.

Комментариев нет:

Отправить комментарий