On Wed, Oct 28, 2009 at 12:24:02AM +0100, Дмитрий Леоненко wrote:
> На уровне server поставил debug. Там в общем легко найти большие перепады.
> Параметры ядра соляры уже тюнил.
>
> /etc/system :
> set rlim_fd_max=65536
> set rlim_fd_cur=65536
> set sq_max_size=0
> set tcp:tcp_conn_hash_size=8192
> set autoup=60
> set pcisch:pci_stream_buf_enable=0
> set ip:tcp_squeue_wput=1
> set ip:tcp_squeue_close=1
> set ip:ip_squeue_bind=1
> set ip:ip_squeue_worker_wait=10
> set ip:ip_squeue_profile=0
>
> В атаче последний конфиг, с которым баг и собсно сам дебаг-лог.
> Почему рефьюзит - не ясно.
В это логе есть один странный момент:
2009/10/28 02:11:45 [debug] 1635#0: *320 http write filter: l:1 f:0 s:17143
2009/10/28 02:11:45 [debug] 1635#0: *320 http write filter limit 0
2009/10/28 02:11:46 [debug] 1636#0: eventport add event: fd:11 ev:0001
2009/10/28 02:11:48 [debug] 1636#0: post event 081DB5D8
--
2009/10/28 02:12:04 [debug] 1636#0: *495 free: 00000000
2009/10/28 02:12:04 [debug] 1636#0: *495 free: 080D55F0, unused: 56
2009/10/28 02:11:45 [debug] 1635#0: *320 sendfilev: 17143 17143
2009/10/28 02:11:45 [debug] 1635#0: *320 http write filter 00000000
Воркер 1635 вызывает sendfilev() в 02:11:46 и возвращается из ядра через
9 секунд - в 02:12:04, судя по временным отметкам других процессов.
Временные отметки 1635 остались старые, потому что nginx обновляет время
только в определённых точках.
Вообще говоря, sendfilev() должен возвращаться быстро, разумеется,
с учётом времени обрабоки TCP/IP, чтения с диска и NFS. NFS, случаем,
не используется ? Если нет, то похоже на ошибку в ядре или битые диски.
--
Игорь Сысоев
http://sysoev.ru