Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[emerg] 6428#0: malloc() 3053187144 bytes failed (12: Cannot allocate memory)
- To: nginx-ru@xxxxxxxxx
- Subject: [emerg] 6428#0: malloc() 3053187144 bytes failed (12: Cannot allocate memory)
- From: Eugene Batogov <johnbat26@xxxxxxxxx>
- Date: Fri, 25 Mar 2011 11:53:47 +0300
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:date:message-id:subject:from:to :content-type; bh=ymo1T3TRUqxPt49G96ZXbIT13rEQgs8Qxwk4ztTzYNI=; b=rbDP7jhBjaJNMW6t5NTZKtXEwE/i3nDSZgLr83Nu9WXS268gAFZxA6ixP27xjAlzfb 9B+O3/7wxQel6ymfzfEKjgKYOjg1VgTFNBy7qKyNYQ/BZMuiVGpyTvGLaAJ8nskud+y7 wBmtC7Xr8XvVLEwvYHWRsT653U92gpWYJEPmA=
- Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; b=Ztem2+MG2kTmJfOy6Qt3tzEtORE+73KDAmz+Y44kvKH0TOaMBWMdUTIkYk7mixNO/j xTZrRSF2/4OM4QMz/MUKP9xOjvfg9XrAWMtV90W1llGyLQ+yLn39ERcq1uxGuWlwHakg HgiU4aA+YLRyi9/LfoZ7XMH/EWTo3wLV3CwNw=
Приветствую всех. Возникли две интересные проблемы, а точнее записи в nginx.log: ... 2011/03/18 17:34:46 [alert] 6431#0: ngx_slab_free(): chunk is already free 2011/03/18 17:34:46 [alert] 6429#0: ngx_slab_free(): chunk is already free
2011/03/18 17:34:46 [alert] 6429#0: ngx_slab_free(): chunk is already free 2011/03/18 17:35:16 [alert] 6429#0: ngx_slab_free(): chunk is already free 2011/03/18 17:35:16 [alert] 6429#0: ngx_slab_free(): chunk is already free
2011/03/18 17:35:46 [alert] 6433#0: ngx_slab_free(): chunk is already free 2011/03/18 17:35:46 [alert] 6433#0: ngx_slab_free(): chunk is already free 2011/03/18 17:36:16 [crit] 6436#0: ngx_slab_alloc() failed: no memory
2011/03/18 17:36:16 [crit] 6436#0: ngx_slab_alloc() failed: no memory 2011/03/18 17:36:16 [crit] 6433#0: ngx_slab_alloc() failed: no memory 2011/03/18 17:36:16 [crit] 6433#0: ngx_slab_alloc() failed: no memory 2011/03/18 17:36:16 [crit] 6433#0: ngx_slab_alloc() failed: no memory
2011/03/18 17:36:16 [crit] 6433#0: ngx_slab_alloc() failed: no memory 2011/03/18 17:36:16 [crit] 6429#0: ngx_slab_alloc() failed: no memory 2011/03/18 17:36:16 [crit] 6429#0: ngx_slab_alloc() failed: no memory ....
Почему появляются эти сообщения? Кто их инициатор?
и вторая: ... 2011/03/18 17:30:16 [emerg] 6428#0: malloc() 3053187144 bytes failed (12: Cannot allocate memory) ... Под что nginx выделяет так много памяти?
Как это можно узнать?
-------- И еще вопрос: можно ли в Linux x86 увеличить размер памяти выделяемого ядру ? Просто, если использовать http_push (a.k.a comet) то памяти для сокетов может не хватить при >50K соединений.
А на 64-bit какой размер памяти для ядра по умолчанию?
И еще возникла проблема с остановом nginx после использования nginx_http_push_module. Он очень долго останавливается, такое ощущение, что ждет окончания таймаутов.
Наш sysctl.conf прикреплен к письму.
-------------- Наши окружения: ----------- nginx version: nginx/0.7.65 built by gcc 4.1.2 20080704 (Red Hat 4.1.2-48) TLS SNI support disabled
configure arguments: --user=nginx --group=nginx --prefix=/usr/share/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/var/lib/nginx/tmp/client_body --http-proxy-temp-path=/var/lib/nginx/tmp/proxy --http-fastcgi-temp-path=/var/lib/nginx/tmp/fastcgi --pid-path=/var/run/nginx.pid --lock-path=/var/lock/subsys/nginx --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_gzip_static_module --with-http_stub_status_module --with-http_perl_module --with-mail --with-mail_ssl_module --with-cc-opt='-O2 -g -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tables' --add-module=/usr/src/redhat/BUILD/nginx-0.7.65/nginx-upstream-fair --add-module=/usr/src/redhat/BUILD/nginx-0.7.65/nginx_http_push_module-0.692 --add-module=/usr/src/redhat/BUILD/nginx-0.7.65/nginx_upstream_hash-0.3.1
----------- nginx version: nginx/0.8.53 built by gcc 4.1.2 20080704 (Red Hat 4.1.2-48) TLS SNI support disabled configure arguments: --user=nginx --group=nginx --prefix=/usr/share/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/var/lib/nginx/tmp/client_body --http-proxy-temp-path=/var/lib/nginx/tmp/proxy --http-fastcgi-temp-path=/var/lib/nginx/tmp/fastcgi --pid-path=/var/run/nginx.pid --lock-path=/var/lock/subsys/nginx --with-http_secure_link_module --with-http_random_index_module --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_gzip_static_module --with-http_stub_status_module --with-http_perl_module --with-mail --with-mail_ssl_module --with-cc-opt='-O2 -g -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tables' --with-ipv6 --add-module=/usr/src/redhat/BUILD/nginx-0.8.53/nginx-upstream-fair --add-module=/usr/src/redhat/BUILD/nginx-0.8.53/nginx-upload-progress-module --add-module=/usr/src/redhat/BUILD/nginx-0.8.53/mod_zip-1.1.6 --add-module=/usr/src/redhat/BUILD/nginx-0.8.53/nginx_upload_module-2.2.0 --add-module=/usr/src/redhat/BUILD/nginx-0.8.53/nginx_mod_h264_streaming-2.2.7 --add-module=/usr/src/redhat/BUILD/nginx-0.8.53/nginx_http_push_module-0.692 --add-module=/usr/src/redhat/BUILD/nginx-0.8.53/nginx_upstream_hash-0.3.1
------------
Из сторонних модулей мы используем: - nginx_upstream_hash-0.3.1 - nginx_http_push_module -0.692.
--
# Kernel sysctl configuration file for Red Hat Linux
#
# For binary values, 0 is disabled, 1 is enabled. See sysctl(8) and
# sysctl.conf(5) for more details.
# Controls IP packet forwarding
net.ipv4.ip_forward = 0
# Controls source route verification
net.ipv4.conf.default.rp_filter = 1
# Do not accept source routing
net.ipv4.conf.default.accept_source_route = 0
# Controls the System Request debugging functionality of the kernel
kernel.sysrq = 0
# Controls whether core dumps will append the PID to the core filename
# Useful for debugging multi-threaded applications
kernel.core_uses_pid = 1
# Controls the use of TCP syncookies
net.ipv4.tcp_syncookies = 1
# Controls the maximum size of a message, in bytes
kernel.msgmnb = 65536
# Controls the default maxmimum size of a mesage queue
kernel.msgmax = 65536
# Controls the maximum shared segment size, in bytes
kernel.shmmax = 4294967295
# Controls the maximum number of shared memory segments, in pages
kernel.shmall = 268435456
###################
#Custom parameters#
###################
# We use it always
# Параметр представляет собой два целых числа, которые определяют диапазон
локальных портов,
# которые используются в клиентских соединениях, т.е. для исходящих
# соединений, которые связывают нашу систему с некоторым узлом сети, где мы
выступаем в качестве клиента
net.ipv4.ip_local_port_range = 1025 65535
# Быстрая утилизация сокетов находящихся в состоянии TIME_WAIT
net.ipv4.tcp_tw_recycle = 1
# Время пребывания сокета в состоянии FIN-WAIT-2
net.ipv4.tcp_fin_timeout = 3
# New param
# Длина очереди для входящих пакетов
net.core.netdev_max_backlog = 10000
# Количество возможных подключений к сокету, прежде чем будут отброшены
net.core.somaxconn = 4096
# Буфер под хранение SYN запросов на соединение. Значение по умолчанию 1024,
что очень мало для нагруженных серверов.
net.ipv4.tcp_max_syn_backlog = 2048
# Возможное количество сокетов в состоянии TIME_WAIT
#net.ipv4.tcp_max_tw_buckets = 720000
# Опция включена, иначе не будет работать опция tcp_tw_reuse описанная ниже
net.ipv4.tcp_timestamps = 1
# Механизм, разрешающий использовать уже существующие сокеты которые находятся
в состоянии TIME_WAIT, если это не повредит безопасности.
net.ipv4.tcp_tw_reuse = 1
# Временной интервал попытки определения жизнеспособности соединения.
# По умолчанию 7200, т е через 2 часа после того как через соединение прочел
последний пакет,
# система отправит keep-alive запрос чтобы узнать состояние соединения.
Уменьшим этот параметр до 30 минут.
net.ipv4.tcp_keepalive_time = 300
# Количество посылок keepalive запросов и интервалов между запросами.
# По умолчанию делается 9 попыток с интервалом в 75 секунд, что в свою очередь
займет 9*75=11 минут и 25 секунд,
# что в сочетании с параметром по умолчанию net.ipv4.tcp_keepalive_time = 7200
дает нам
# значение 2часа 11 минут 25 секунд ? минимальное значение времени после
которого соединение будет закрыто нашей стороной
# после прохождения через это соединение последнего пакета. Это очень большой
интервал.
net.ipv4.tcp_keepalive_probes = 7
net.ipv4.tcp_keepalive_intvl = 30
# Максимальный размер буферов по умолчанию для приема и отправки данных через
сокеты (в байтах)
net.core.wmem_max = 16777216
net.core.rmem_max = 16777216
# Размер буферов по умолчанию для приема и отправки данных через сокеты (в
байтах)
#net.core.rmem_default = 8388608
#net.core.wmem_default = 4194394
# Настройка буферов для TCP и UDP соединений (min, default, max bytes) (в
байтах)
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
# Этот параметр дает ядру больше памяти для TCP.
# Это будет необходимо при 50k+ открытых соединений.
net.ipv4.tcp_mem = 50576 64768 98152
# Количество попыток закрыть соединение перед тем как оно будет разорвано
# принудительно. Если вы администрируете http-сервер, который испытывает
# большие нагрузки, то стоит подумать об уменьшении этого значения.
# Переменная принимает целое число. Значение по-умолчанию 7, что
# соответствует, примерно, от 50 секунд до 16 минут
net.ipv4.tcp_orphan_retries = 3
# Переменная задает максимальное число осиротевших (не связанных ни с
# одним процессом) сокетов. Если это число будет превышено, то такие
# соединения разрываются, а в системный журнал пишется предупреждение. Это
# ограничение существует исключительно ради предотвращения простейших
# разновидностей DoS-атак.
net.ipv4.tcp_max_orphans = 8192
# Максимальное значение открытых файлов. Что бы его узнать, выполните
# команду cat /proc/sys/fs/file-max
fs.file-max = 999999
# Использовать swap только в крайнем случае
vm.swappiness = 20
#Запрещаем кеширование статуса ssthresh (были ретрансмиты) для других соединений
net.ipv4.tcp_no_metrics_save = 1
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru
|