The OpenNET Project / Index page

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

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"apache+php = FATAL: emalloc(): Unable to allocate xxx bytes"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [ Отслеживать ]

"apache+php = FATAL: emalloc(): Unable to allocate xxx bytes"  
Сообщение от Oloremo email(ok) on 25-Мрт-08, 18:19 
Приветсвую.

Проблемма:

Есть некое самописное php4 приложение отдающееся через apache. Оно
использует как бекэнд mysql и memcached для кэширования запросов. Оно
активно используется вот уже несколько лет и сейчас для него поднимается
новый сервер(собственно говоря вот этот). Мы начали проводить стрес тест
приложения и наткнулись на проблемму.
Стресс тест проводился следющим образом:
Через это приложение с многих компьютеров запрашивались несколько
больших отчётов(обьём от 5 до 20 мб). Первые отчёты приходили, но через
некоторое время(около 30 минут) всё ломалось и приложение переставало
работать. В логах апача было следующе:

FATAL: emalloc(): Unable to allocate xxx bytes

xxx = постоянно менялось от 1 байта до 100.

И после этого праграмма больше не работала. Рестарт апача возвращал всё
на исходную позицию.

Сразу скажу что это НЕ зависит от php.ini memory_limit, от нехватки ОЗУ
или swap.

Ошибка возникает при делолтных конфигах mysql(my.cnf) и php(php.ini) так
и без них.

Мы пробовали ставить разные версии Apache(2.0; 2.2), тюнить
php.ini(memory_limit, etc), переустанавливать систему с нуля. Ничего
ситуацию не изменило.

Мы пробовали пускать эти запросы, которые убивают приложени в sql виде
и никаких проблем не было. Проблема где-то именно в взаимодействии php и
mysql, imho.

Я долго гуглил эту ошибку и прочитал пол интернета в том числе и все
баги на багтрекере php. Но нигде не нашёл решение для нашей ситуации.

Буду рад любой помощи.

---------
Железо:
CPU: Intel(R) Xeon(R) CPU E5335  @ 2.00GHz (2000.08-MHz 686-class CPU)
3 Gb RAM

Увы не могу сказать точнее про ОЗУ и ничего не знаю про материнскую
плату. Когда узнаю - обновлю информацию.

Система:
FreeBSD 6.3-RELEASE /usr/obj/usr/src/sys/SMP  i386
Express install.

Утановленные пакеты:

Apache-2.0.63
Mysql-server-5.0.51a
Memcached-1.2.4
Php4-4.4.8
(WITH_CLI=true, WITHOUT_CGI=true, WITH_APACHE=true, WITHOUT_DEBUG=true,
WITH_SUHOSIN=true, WITH_MULTIBYTE=true, WITHOUT_IPV6=true
WITHOUT_MAILHEAD=true, WITHOUT_REDIRECT=true, WITHOUT_DISCARD=true
WITHOUT_FASTCGI=true, WITHOUT_PATHINFO=true, WITH_OPENSSL=true
WITH_ZLIB=true)
  + extensions
(WITHOUT_BCMATH=true, WITHOUT_BZ2=true, WITH_CALENDAR=true,
WITHOUT_CRACK=true, WITH_CTYPE=true, WITH_CURL=true, WITHOUT_DBA=true
WITHOUT_DBASE=true, WITHOUT_DBX=true, WITHOUT_DIO=true,
WITH_DOMXML=true, WITH_EXIF=true, WITHOUT_FILEINFO=true,
WITHOUT_FILEPRO=true, WITHOUT_FRIBIDI=true, WITHOUT_FTP=true,
WITH_GD=true, WITHOUT_GETTEXT=true, WITHOUT_GMP=true, WITH_ICONV=true,
WITHOUT_IMAP=true, WITHOUT_INTERBASE=true, WITHOUT_LDAP=true,
WITH_MBSTRING=true, WITHOUT_MCAL=true, WITHOUT_MCRYPT=true,
WITHOUT_MCVE=true, WITH_MHASH=true, WITHOUT_MNOGOSEARCH=true
WITHOUT_MSSQL=true, WITH_MYSQL=true, WITHOUT_NCURSES=true,
WITHOUT_ODBC=true, WITHOUT_OPENSSL=true, WITHOUT_ORACLE=true,
WITH_OVERLOAD=true, WITHOUT_PCNTL=true, WITH_PCRE=true, WITHOUT_PDF=true
WITHOUT_PFPRO=true, WITHOUT_PGSQL=true, WITH_POSIX=true,
WITHOUT_PSPELL=true, WITHOUT_READLINE=true, WITHOUT_RECODE=true,
WITH_SESSION=true, WITHOUT_SHMOP=true, WITHOUT_SNMP=true,
WITHOUT_SOCKETS=true, WITHOUT_SYBASE_CT=true, WITHOUT_SYSVMSG=true,
WITHOUT_SYSVSEM=true, WITHOUT_SYSVSHM=true, WITH_TOKENIZER=true,
WITHOUT_WDDX=true, WITH_XML=true, WITH_XMLRPC=true, WITH_XSLT=true,
WITHOUT_YAZ=true, WITHOUT_YP=true, WITHOUT_ZIP=true, WITH_ZLIB=true,)

и их зависимости. Всё из портов.
(извиняюсь за большое кол-во сборочной информации, но мне кажется она
весьма важна в данной проблемме)

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

 Оглавление

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


1. "apache+php = FATAL: emalloc(): Unable to allocate xxx bytes"  
Сообщение от angra (??) on 25-Мрт-08, 20:15 
Если уж переставляли систему, то может стоит попробовать какой-нибудь линукс. Там другое ядро и malloc.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "apache+php = FATAL: emalloc(): Unable to allocate xxx bytes"  
Сообщение от Oloremo email(ok) on 26-Мрт-08, 10:13 
>Если уж переставляли систему, то может стоит попробовать какой-нибудь линукс. Там другое
>ядро и malloc.

Нет, задача поставить именно под FreeBSD, увы.

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

3. "apache+php = FATAL: emalloc(): Unable to allocate xxx bytes"  
Сообщение от Nimdar (ok) on 26-Мрт-08, 13:01 
>Приветсвую.
>Есть некое самописное php4 приложение отдающееся через apache.

В этом вашем приложении, где-то пожет быть прописан
@ini_set("memory_limit", "");

И можете хоть обтюниться c php.ini - значение будет браться из скрипта.

> Оно использует как бекэнд mysql и memcached для кэширования запросов.

Как насчёт попробовать увеличить память, выделенную для memcached?


>Мы пробовали ставить разные версии Apache(2.0; 2.2), тюнить
>php.ini(memory_limit, etc), переустанавливать систему с нуля. Ничего
>ситуацию не изменило.

Следуя вашей логике, надо было попробовать ещё купить новый сервер.


>Буду рад любой помощи.

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

4. "apache+php = FATAL: emalloc(): Unable to allocate xxx bytes"  
Сообщение от Oloremo email(ok) on 26-Мрт-08, 13:54 
>>Приветсвую.
>>Есть некое самописное php4 приложение отдающееся через apache.
>
>В этом вашем приложении, где-то пожет быть прописан
>@ini_set("memory_limit", "");

Нет, этого нигде нет. Проблема не в memory_limit.
>> Оно использует как бекэнд mysql и memcached для кэширования запросов.
>Как насчёт попробовать увеличить память, выделенную для memcached?

Приложение без проблем работает и без memcached. Просто тогда оно ничего не кеширует что влияет на производительность. Мы пробовали его тестировать без memcached - ошибка присутствовала.

>Следуя вашей логике, надо было попробовать ещё купить новый сервер.

Мы пробовали разворачивать эту же конфигурацию на другом сервере. Ошибка присутствовала.

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

5. "apache+php = FATAL: emalloc(): Unable to allocate xxx bytes"  
Сообщение от Антон email(??) on 27-Мрт-08, 17:36 
лимиты во фре пробовали проверять?
limits -U www (или под каким юзером это у вас работает?)
ulimit -a
попробуйте увеличить системные лимиты на процесс
/boot/loader.conf
kern.maxdsiz="1010612736" # 1.5GB
kern.dfldsiz="1010612736" # 1.5GB
kern.maxssiz="268435454" # 256MB

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

6. "apache+php = FATAL: emalloc(): Unable to allocate xxx bytes"  
Сообщение от Oloremo email(ok) on 27-Мрт-08, 18:01 
>лимиты во фре пробовали проверять?
>limits -U www (или под каким юзером это у вас работает?)
>ulimit -a
>попробуйте увеличить системные лимиты на процесс
>/boot/loader.conf
>kern.maxdsiz="1010612736" # 1.5GB
>kern.dfldsiz="1010612736" # 1.5GB
>kern.maxssiz="268435454" # 256MB

Под www.

%limits -U www
Resource limits for class default:
  cputime          infinity secs
  filesize         infinity kB
  datasize         infinity kB
  stacksize        infinity kB
  coredumpsize     infinity kB
  memoryuse        infinity kB
  memorylocked     infinity kB
  maxprocesses     infinity
  openfiles        infinity
  sbsize           infinity bytes
  vmemoryuse       infinity kB
%ulimit -a
ulimit: Command not found.

%limit
cputime      unlimited
filesize     unlimited
datasize     524288 kbytes
stacksize    65536 kbytes
coredumpsize unlimited
memoryuse    unlimited
vmemoryuse   unlimited
descriptors  11095
memorylocked unlimited
maxproc      5547
sbsize       unlimited

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

7. "apache+php = FATAL: emalloc(): Unable to allocate xxx bytes"  
Сообщение от Антон email(??) on 27-Мрт-08, 18:03 
А сколько апач сжирает памяти перед тем как отвалиться?
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

8. "apache+php = FATAL: emalloc(): Unable to allocate xxx bytes"  
Сообщение от Oloremo email(ok) on 27-Мрт-08, 18:33 
>А сколько апач сжирает памяти перед тем как отвалиться?

В top`пе успевает мелькнуть 422 mb, и дальше он отваливается, возможно реальное значение больше.

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

9. "apache+php = FATAL: emalloc(): Unable to allocate xxx bytes"  
Сообщение от Oloremo email(ok) on 27-Мрт-08, 18:43 
>А сколько апач сжирает памяти перед тем как отвалиться?

Понаблюдал повнимательней.  
Максимальный размер перед падением был 482 Mb. Предпологаю что падает он где-то чуть выше.
512mb?...

Но из-за чего?

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

10. "apache+php = FATAL: emalloc(): Unable to allocate xxx bytes"  
Сообщение от Антон email(??) on 27-Мрт-08, 18:48 
системный лимит freebsd в полгига на процесс. Поставь в loader.conf значения maxdsize повыше (как я написал)
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

11. " FATAL: emalloc(): Unable to allocate xxx bytes"  
Сообщение от Oloremo email(ok) on 27-Мрт-08, 19:11 
>системный лимит freebsd в полгига на процесс. Поставь в loader.conf значения maxdsize
>повыше (как я написал)

Я не знаю как вас благодарить. Спасибо вам огромное.

Оказывается апач раздувался до 817 (!!!) Mb. Сейчас будем думать из-за чего это.

Вы случаем не из Москвы? :-)  

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

12. " FATAL: emalloc(): Unable to allocate xxx bytes"  
Сообщение от Антон email(??) on 27-Мрт-08, 19:41 
да собсно не за что :)

из нее самой ;)

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

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

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




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

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