Столкнулся с проблемой, пхп которые выполняет апа делают "что-то" что заставляет апач седать за секунды гигабайты памяти, мгновенно свопиться и практически вешать сервер.
Причем в пхп уже стоит лимит времени выполнения - 3 секунды и доступной памяти 16 мегабайт. Раньше стояло 10 секунд - за это время апач не только успевал занять весь своп но и загружал систему настолько что не мог сам записать лог-файл с сообщением об ошибке.Ось - опенсузи, версии пхп и апача пробовал разные 5.2.6 5.2.9 5.2.11 (апач 2.2.10 2.2.13) - везде одно и тоже. понятно что виноваты программеры, но ведь если им не показать на функцию которая вешает сервер они ничего сделать не смогут.
в данном случае эта функция найдена, но вопрос остается.. почему апач занимает гигабайты когда должен при превышении лимита пхп выдавать ошибку. Все бы можно было спустить на тормозах и сказать что это бага пхп, потомучто случай единичный, но дело в том что сайт переехал ко мне с рабочего хостинга.
Список модулей пхп свел к минимуму:
root:/etc/php5/conf.d # cat * |grep ^[a-z]
extension=curl.so
extension=dom.so
extension=gd.so
extension=iconv.so
extension=mbstring.so
extension=mysql.so
extension=soap.so
suhosin.mail.protect = 1
extension=zip.so
extension=zlib.so
модули апача:
APACHE_MODULES="deflate info actions status rewrite alias auth_basic authn_file authz_host authz_groupfile authz_default authz_user authn_dbm autoindex cgi dir env expires include log_config mime negotiation setenvif php5"
Подскажите, как с этим бороться? или куда хотябы копать.
трейс килла свихнувшегося апача (если о чем-то скажет)
Killed process 11631 (httpd2)
httpd2 invoked oom-killer: gfp_mask=0x1201d2, order=0, oomkilladj=0
Pid: 11728, comm: httpd2 Tainted: P 2.6.27.29-0.1-default #1
Call Trace:
[<ffffffff8020da29>] show_trace_log_lvl+0x41/0x58
[<ffffffff8049b38c>] dump_stack+0x69/0x6f
[<ffffffff80285512>] oom_kill_process+0x5c/0x210
[<ffffffff80285b84>] out_of_memory+0x1cd/0x203
[<ffffffff80289153>] __alloc_pages_internal+0x33a/0x442
[<ffffffff8028ac74>] __do_page_cache_readahead+0x9b/0x1a4
[<ffffffff802838ed>] filemap_fault+0x162/0x324
[<ffffffff80291c2c>] __do_fault+0x54/0x3fa
[<ffffffff80293d94>] handle_mm_fault+0x288/0x35c
[<ffffffff8049f626>] do_page_fault+0x302/0x6f5
[<ffffffff8049d4a9>] error_exit+0x0/0x51
[<00007f8146932910>] 0x7f8146932910
Mem-Info:
Node 0 DMA per-cpu:
CPU 0: hi: 0, btch: 1 usd: 0
CPU 1: hi: 0, btch: 1 usd: 0
Node 0 DMA32 per-cpu:
CPU 0: hi: 186, btch: 31 usd: 183
CPU 1: hi: 186, btch: 31 usd: 176
Active:391868 inactive:90592 dirty:0 writeback:0 unstable:0
free:2985 slab:6952 mapped:103 pagetables:10515 bounce:0
Node 0 DMA free:6472kB min:12kB low:12kB high:16kB active:0kB inactive:0kB present:5208kB pages_scanned:0 all_unreclaimable? yes
lowmem_reserve[]: 0 1999 1999 1999
Node 0 DMA32 free:5468kB min:5712kB low:7140kB high:8568kB active:1567472kB inactive:362368kB present:2047120kB pages_scanned:3632491 all_unreclaimable? yes
lowmem_reserve[]: 0 0 0 0
Node 0 DMA: 4*4kB 1*8kB 1*16kB 1*32kB 4*64kB 2*128kB 1*256kB 1*512kB 1*1024kB 0*2048kB 1*4096kB = 6472kB
Node 0 DMA32: 1*4kB 1*8kB 15*16kB 15*32kB 6*64kB 2*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 1*4096kB = 5468kB
157 total pagecache pages
1 pages in swap cache
Swap cache stats: add 2468928, delete 2468927, find 466123/571615
Free swap = 0kB
Total swap = 2104472kB
523984 pages RAM
10793 pages reserved
4232 pages shared
506400 pages non-shared
Out of memory: kill process 11626 (httpd2) score 328556 or a child