FW: sparc64(ultraT1)+Gentoo+nginx

Igor Sysoev is at rambler-co.ru
Sat Apr 19 22:08:47 MSD 2008


On Sat, Apr 19, 2008 at 08:56:18PM +0400, Stanslav hidden wrote:

> Имеется такая связка sparc64(ultraT1)+Gentoo+nginx ещё плюс работает php в c php-fpm. Примерно раз из 10 при запросе любого пхп скрипта портится начало файла. Пробовал вынести nginx на др. сервер, но использовать fastcgi который находится на sparc64 - в этом случае никаких проблем нет. Заметил, что если использовать метод rtsig, то в этом случае вроде бы всё тоже работает нормально, но читал что этот метод не подходит для высоконагруженных проектов. Пробовал другие методы poll, select с ними такие же проблемы как и с epoll.
> Когда страница выдаётся испорченной, то в еррор лог пишется:
> 
> *** glibc detected *** nginx: worker process: free(): invalid pointer: 0x0009ed70 ***
> 2008/04/19 20:51:00 [notice] 6681#0: signal 20 (SIGCHLD) received
> 2008/04/19 20:51:00 [alert] 6681#0: worker process 6752 exited on signal 6
> 2008/04/19 20:51:00 [notice] 6681#0: start worker process 6774
> 2008/04/19 20:51:00 [notice] 6681#0: signal 23 (SIGIO) received
> 2008/04/19 20:51:01 [notice] 6681#0: signal 20 (SIGCHLD) received
> 2008/04/19 20:51:01 [alert] 6681#0: worker process 6754 exited on signal 10
> 2008/04/19 20:51:01 [notice] 6681#0: start worker process 6775
> 2008/04/19 20:51:01 [notice] 6681#0: signal 23 (SIGIO) received
> *** glibc detected *** nginx: worker process: double free or corruption (!prev): 0x0008ca50 ***
> 2008/04/19 20:52:16 [notice] 6681#0: signal 20 (SIGCHLD) received
> 2008/04/19 20:52:16 [alert] 6681#0: worker process 6756 exited on signal 6
> 2008/04/19 20:52:16 [notice] 6681#0: start worker process 6776
> 2008/04/19 20:52:16 [notice] 6681#0: signal 23 (SIGIO) received

Нужно создать каталог, чтобы nginx мог туда писать.
Затем указать его в директиве

working_directory  /path/to/dir;

и добавить

worker_rlimit_core   1024m;

http://sysoev.ru/nginx/docs/ngx_core_module.html#working_directory
http://sysoev.ru/nginx/docs/ngx_core_module.html#worker_rlimit_core

Насколько я понимаю, этого должно быть достаточно, чтобы по сигналам
создавались coredump'ы.

Нужно убедится, что nginx собран с отладочной информацией:

file nginx
..., not stripped

После этого нужно

gdb /path/to/nginx /path/to/core
bt
q

и прислать вывод мне.


-- 
Игорь Сысоев
http://sysoev.ru





More information about the nginx-ru mailing list