У меня проблема с запросом SQL, который по причинам (которые я не понимаю), согласно «strace» a (timeout) и встанет для запуска X-times?
опрос ([{fd = 6, события = POLLIN | POLLPRI}], 1, 0) = 0 (время ожидания)
Сценарий PHP, который выполняет запрос, сначала просматривает базу данных, если соответствующий адрес электронной почты уже есть в базе данных, если нет, то он будет добавлен, и если не было ошибок, отправляется электронное письмо.
Сервер: Ubuntu 14.04.3 LTS
DB: mysql Ver 14.14 Distrib 5.5.44, для debian-linux-gnu (x86_64) с использованием readline 6.3
Таблица: InnoDB
SQL: (Пример | Продолжительность 1 запроса: 0,031 сек.)
SELECT SQL_NO_CACHE user_email FROM mail_logging
WHERE mail_id_fk IN (142)
AND user_email = '[email protected]'
SQL: (EXPLAIN)
id select_type табличный тип возможных_ключей ключ key_len ref row Extra
1 ПРОСТОЙ mail_logging ref id_mail, mail_id_fk, user_email id_mail 775 const, const 1 Использование где; Используя индекс
Трассирование: http://pastebin.com/FbYUZ1a3
Lsof: http://pastebin.com/RyQcbWmj
редактировать: спасибо @VolkerK, теперь я вижу проблему: P
Я думаю, что это сигнал о том, что опрос закончился с таймаутом. Из справочной страницы опроса:
Аргумент timeout указывает минимальное количество миллисекунд, которые блокирует poll (). (Этот интервал будет округлен до степени детализации системных часов, а задержки планирования ядра означают, что интервал блокировки может превышать небольшую величину.) Указание отрицательного значения в тайм-ауте означает бесконечный тайм-аут. Указание тайм-аут, равный нулю, приводит к немедленному возврату poll (), даже если дескрипторы файлов не готовы.
Других решений пока нет …