Задавайте вопросы, мы ответим
Вы не зашли.
Debian 6.
PHP 5.3.6-6~dotdeb.1 with Suhosin-Patch (cli) (built: Apr 3 2011 16:36:05)
mysql Ver 14.14 Distrib 5.1.57, for debian-linux-gnu (x86_64) using readline 6.1
Проблема в том, что страницы сайта грузятся более 20 сек - срабатывает какая-то задержка на связке php-fpm->mysql.
Нагрузку давал siege'ом.
Результаты отдачи статического файла:
Transactions: 7824 hits
Availability: 87.28 %
Elapsed time: 252.56 secs
Data transferred: 105.57 MB
Response time: 2.38 secs
Transaction rate: 30.98 trans/sec
Throughput: 0.42 MB/sec
Concurrency: 73.60
Successful transactions: 7824
Failed transactions: 1140
Longest transaction: 24.63
Shortest transaction: 0.13
Response time - это среднее время загрузки страницы. Тут 2 сек.
То есть с nginx все нормально.
Вот результаты отдачи файла <?php phpinfo(); ?>
Transactions: 7821 hits
Availability: 86.56 %
Elapsed time: 255.03 secs
Data transferred: 64.80 MB
Response time: 1.98 secs
Transaction rate: 30.67 trans/sec
Throughput: 0.25 MB/sec
Concurrency: 60.87
Successful transactions: 7821
Failed transactions: 1214
Longest transaction: 24.15
Shortest transaction: 0.09
Response time: 1.98 secs - нормальный показатель. То есть сам php, если не обращается к Mysql работает нормально.
А вот такой ужас при тестировании реальных страниц сайта, то есть тех, где срабатывает связка php-mysql:
Transactions: 1626 hits
Availability: 76.55 %
Elapsed time: 299.95 secs
Data transferred: 16.96 MB
Response time: 25.59 secs
Transaction rate: 5.42 trans/sec
Throughput: 0.06 MB/sec
Concurrency: 138.74
Successful transactions: 1626
Failed transactions: 498
Longest transaction: 32.63
Shortest transaction: 15.62
24 сек ждать загрузки страницы это конечно кошмар. Но что интересно, проблема не в нагрузке mysql на систему - по top'у все ок - по нулям, mysql не жрет ресурсов вообще. То есть где-то срабатывает задержка в самой связке php-mysql.
Подскажите пожалуйста из-за чего такое может происходить?
Отредактированно valetrammstein (17.05.2011 23:54:32)
Неактивен
А failed transactions Вас не смущают?
Начните со --skip-name-resolve и выставления прав по IP (а еще лучше —
соединяйтесь через unix socket с базой). Если это таймаут, то чаще всего
из-за плохо настроенного DNS.
Неактивен
paulus написал:
А failed transactions Вас не смущают?
Начните со --skip-name-resolve и выставления прав по IP (а еще лучше —
соединяйтесь через unix socket с базой). Если это таймаут, то чаще всего
из-за плохо настроенного DNS.
Добавил в секцию [mysqld] --skip-name-resolve, перезапусти mysql - не помогло.
>>>из-за плохо настроенного DNS
а что еще бывает плохо? Не знаю, днс работает, если проверять nslookup domen.ru 127.0.0.1
Как проверить хорошо ли работает?
>>>выставления прав по IP
это как?
>>>а еще лучше —
соединяйтесь через unix socket с базой
можно кокретней, куда что вписать.
У меня nginx и php-fpm через unix socket работают, соотвественно
в /etc/php5/fpm/pool.d/www.conf
;listen = 127.0.0.1:9000
listen = /tmp/php-fpm.sock
в /etc/nginx/sites-enabled/default
fastcgi_pass unix:/tmp/php-fpm.sock;
я так понимаю настройки надо менять в /etc/mysql/my.cnf
в этом месте
[mysqld]
port = 3306
socket = /var/run/mysqld/mysqld.sock
Но что туда вписать, чтобы работало через unix socket?
Неактивен
Это PHP у Вас с nginx общается через socket. А PHP с MySQL как?
Что написано в mysql_connect()?
Неактивен
paulus написал:
Это PHP у Вас с nginx общается через socket. А PHP с MySQL как?
Что написано в mysql_connect()?
Я так понял эта строка в /etc/php5/fpm/php.ini
; Default socket name for local MySQL connects. If empty, uses the built-in
; MySQL defaults.
; http://php.net/mysql.default-socket
mysql.default_socket =
Но что тут вписать?
Неактивен
/var/run/mysqld/mysqld.sock
Неактивен
Удалось локализировать проблему.
Создал тестовую БД, тестовый php-скрипт с буквально несколькими командами (соединиться, выбрать данные, закрыть) и вместо ожидаемых 16 сек увидел 0.01 сек кажется.
В общем в конце концов оказалось, что проблема вообще в скриптах движка, а именно один php-файл коннектился к удаленному серверу через @file_get_contents, что давало такую задержку.
Спасибо за помощь, все уже работает.
Неактивен