The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Апач ест память"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы WEB технологии (Public)
Изначальное сообщение [ Отслеживать ]

"Апач ест память"  +/
Сообщение от obl (ok) on 25-Окт-09, 03:38 
Столкнулся с проблемой, пхп которые выполняет апа делают "что-то" что заставляет апач  седать за секунды гигабайты памяти, мгновенно свопиться и практически вешать сервер.
Причем в пхп уже стоит лимит времени выполнения - 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


Высказать мнение | Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Апач ест память"  +1 +/
Сообщение от sHaggY_caT (ok) on 25-Окт-09, 19:05 

>в данном случае эта функция найдена, но вопрос остается.. почему апач занимает
>гигабайты когда должен при превышении лимита пхп выдавать ошибку. Все бы
>можно было спустить на тормозах и сказать что это бага пхп,
>потомучто случай единичный, но дело в том что сайт переехал ко
>мне с рабочего хостинга.

А что у вас в /etc/security/limits.conf ?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Апач ест память"  +/
Сообщение от obl (ok) on 25-Окт-09, 20:21 

>А что у вас в /etc/security/limits.conf ?

там все по дефолту - ничего кроме комментов

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Апач ест память"  +/
Сообщение от sHaggY_caT (ok) on 25-Окт-09, 20:49 
>
>>А что у вас в /etc/security/limits.conf ?
>
>там все по дефолту - ничего кроме комментов

Тогда чему Вы удивляетесь, что Апач все выел о_О:)?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Апач ест память"  +/
Сообщение от obl (ok) on 25-Окт-09, 21:34 
>Тогда чему Вы удивляетесь, что Апач все выел о_О:)?

потомучто он должен выключать пхп при привышении лимитов :)

специально проверил - завел лимиты - апач всеравно ест гигабайты.. я особенный или это бага? :)

root:~ # cat /etc/security/limits.conf |grep @www
@www hard data 2144
@www hard rss 2144
@www hard memlock 2144
@www hard rss 2144


> ulimit -a

core file size          (blocks, -c) 0
data seg size           (kbytes, -d) 2144
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 16375
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) 2144
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 16375
virtual memory          (kbytes, -v) 3325920
file locks                      (-x) unlimited

тут вродебы все ок

а вот апач который не обламывается юзать по 10 метров оперативки при нормальной работе и опятьже гигабайты если его заставляют кривые скрипты (лимит пхп - 30 метров повторяю)
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
9104 wwwrun    20   0 1967m 1.7g 3872 S    3 86.9   0:14.20 httpd2-prefork
9100 wwwrun    20   0  242m  16m 3856 S    0  0.8   0:00.58 httpd2-prefork
9102 wwwrun    20   0  237m 9708 3868 S    0  0.5   0:00.20 httpd2-prefork
9107 wwwrun    20   0  240m  12m 4240 S    0  0.6   0:00.62 httpd2-prefork
9108 wwwrun    20   0  241m  14m 3492 S    0  0.7   0:00.30 httpd2-prefork
9115 wwwrun    20   0  240m  12m 4196 S    0  0.6   0:01.12 httpd2-prefork
9117 wwwrun    20   0  240m  12m 3716 S    0  0.6   0:00.12 httpd2-prefork

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Апач ест память"  +/
Сообщение от sHaggY_caT (ok) on 25-Окт-09, 22:20 
>>Тогда чему Вы удивляетесь, что Апач все выел о_О:)?
>
>потомучто он должен выключать пхп при привышении лимитов :)
>специально проверил - завел лимиты - апач всеравно ест гигабайты.. я особенный
>или это бага? :)

Может, и бага PHP, я такое пару раз видела, но у нас на бэкэндах стоят лимиты, поэтому апач просто залипает и срабатывает пробник в мониторинге (но такое бывает относительно редко)

Так же, в этой Вашей SUSE может быть все что угодно, никогда не видела, что бы кто-то на ней городил LAMP'у, уж извините :(
Фидбэк и багаж багов у Новелла по LAMP, имхо, минимальный...

>root:~ # cat /etc/security/limits.conf |grep @www
>@www hard data 2144
>@www hard rss 2144
>@www hard memlock 2144
>@www hard rss 2144
>
>
>> ulimit -a

Этот ulimit для рута, или таки для @www :)?

>[оверквотинг удален]
>real-time priority          
>   (-r) 0
>stack size          
>   (kbytes, -s) 8192
>cpu time          
>    (seconds, -t) unlimited
>max user processes          
>    (-u) 16375
>virtual memory          (kbytes,
>-v) 3325920

Смущает... Я бы так же уменьшила max user processes (зачем столько??) и virtual memory.
В крайнем случае, можно будет написать скрипт, который будет определять падение сервиса, и передергивать его по крону, но сам сервер при этом будет доступен и почти в порядке...

Не хотите тоже самое потетстить на CentOS или Фряхе?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "Апач ест память"  +/
Сообщение от obl (ok) on 26-Окт-09, 00:04 

>Может, и бага PHP, я такое пару раз видела, но у нас
>на бэкэндах стоят лимиты, поэтому апач просто залипает и срабатывает пробник
>в мониторинге (но такое бывает относительно редко)
>
>Так же, в этой Вашей SUSE может быть все что угодно, никогда
>не видела, что бы кто-то на ней городил LAMP'у, уж извините
>:(
>Фидбэк и багаж багов у Новелла по LAMP, имхо, минимальный...

согласен. минимальный, но тут факт... вообще этот ресурс восстановлен после того как поверхность диска покуцалась, но тут вродебы не должно быть проблем :)

>Этот ulimit для рута, или таки для @www :)?

для wwwrun

>Смущает... Я бы так же уменьшила max user processes (зачем столько??) и
>virtual memory.
>В крайнем случае, можно будет написать скрипт, который будет определять падение сервиса,
>и передергивать его по крону, но сам сервер при этом будет
>доступен и почти в порядке...
>
>Не хотите тоже самое потетстить на CentOS или Фряхе?

да уже есть мысли об этом :)
а как уменьшить виртуал мемори ? в лимитсах об этом ни слова... только реальная память

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру