![]()  | 
		
Задавайте вопросы, мы ответим
Вы не зашли.
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, что давало такую задержку.
Спасибо за помощь, все уже работает.
Неактивен