Задавайте вопросы, мы ответим
Вы не зашли.
Добрый день. Периодически происходит подвисание процессов. В списке я вижу картину:
Id User Host db Command Time State Info
76743 r localhost db_r Sleep 231 NULL
76927 r localhost db_r Sleep 190 NULL
77303 r localhost db_r Sleep 111 NULL
77392 r localhost db_r Sleep 93 NULL
77516 r localhost db_r Sleep 68 NULL
77535 r localhost db_r Sleep 62 NULL
Никак не могу найти условия, при которых это происходит. Причем, происходит периодически, но с разным периодом. Можно ли как-то понять, из-за чего это может происходить?
Неактивен
Sleep - это состояние процесса, когда он ничего не делает. Это не подвисание.
Возможно, подвисает само приложение?
Неактивен
PHP может держать открытые соединения (т.н. persistent connection). Ничего страшного в этом нет
Неактивен
rgbeast написал:
PHP может держать открытые соединения (т.н. persistent connection). Ничего страшного в этом нет
Пока их не много, страшного действительно ничего нет. Однако, их может накапливаться такое количество, что начинаются ошибки Too many connection, да и mysqld занимает чуть ли не 100% процессора.
persistent connection мы не используем.
Отредактированно Magz (29.08.2008 11:16:22)
Неактивен
Если это действительно старые соединения, то со стороны сервера это легко полечить
установкой параметров:
1. max_connections - количество одновременно разрешенных соединений. На нагруженном
сервере это число может быть достаточно большим (например, 1024).
2. wait_timeout - время (в секундах), которое сервер ждет от соединения, чтобы оно
выполнило хоть какой-нибудь запрос. Если поставить разумное число (например, 100), то
все Ваши спящие соединения будут обрубаться, когда время сна достигнет 100 секунд.
Если параметры нужно ставить глобально, то их нужно вписать в my.cnf в раздел [mysqld],
налету можно проставить командой SET GLOBAL max_connections=1024;
Неактивен
Спасибо, сейчас попробую.
В my.cnf нужно использовать конструкцию
set-variable = max_connections = 1024;
Или можно писать напрямую
max_connections = 1024;
Неактивен
Оба варианта допустимы.
На стороне php есть соответствующие настройки в php.ini
[MySQL]
; Allow or prevent persistent links.
mysql.allow_persistent = On
; Maximum number of persistent links. -1 means no limit.
mysql.max_persistent = -1
Неактивен