Re: nginx 1.18.0 ест всю память и swap на Ubuntu Server 20.04.1 LTS
Alexey Galygin
mif на me.com
Пн Авг 31 13:22:34 UTC 2020
что в принципе логично и вряд ли изменится под нагрузкой — там 32 честных ядра
auto выбрал по одному воркеру на ядро
хотя не логично, вот на текущем стабильном стенде, где 20HT ядер, воркеров оказалось 53…
> On 31 Aug 2020, at 16:19, Alexey Galygin <mif на me.com> wrote:
>
> сервер сейчас не под нагрузкой
> в ночи проверю
>
> сейчас 32 воркера
>
>> On 31 Aug 2020, at 16:07, Илья Шипицин <chipitsine на gmail.com <mailto:chipitsine на gmail.com>> wrote:
>>
>> Количество воркеров можно посмотреть
>>
>> ps auxw | grep nginx | grep worker | wc -l
>>
>>
>> Это безопасно
>>
>> On Mon, Aug 31, 2020, 2:38 PM Alexey Galygin <mif на me.com <mailto:mif на me.com>> wrote:
>> стандартная сборка из docker hub nginx:1.18.0
>>
>> docker exec nginx nginx -V
>>
>> TLS SNI support enabled
>> configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-g -O2 -fdebug-prefix-map=/data/builder/debuild/nginx-1.18.0/debian/debuild-base/nginx-1.18.0=. -fstack-protector-strong -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -Wl,--as-needed -pie’
>>
>> тестировать можем только по ночам, днём пользователи работают
>> поэтому посмотреть рост воркеров сейчас не представляется возможным + требуется именно получить нагрузку (пока сервер не трогают там штиль и спокойствие)
>>
>> хочу собрать идеи, что крутить ночью
>>
>> возможно дело и не в количестве воркеров: по скриншоту видно, что всего 5-10 воркеров набрали всю память
>>
>> конфиг большой, светить бы его прод версию не хотелось
>>
>> могу точечно надёргать:
>>
>> worker_processes auto;
>>
>> events {
>> worker_connections 4096;
>> multi_accept on;
>> use epoll;
>> }
>> worker_rlimit_nofile 10240;
>>
>> http {
>> client_max_body_size 2000m;
>> sendfile on;
>> tcp_nopush on;
>> tcp_nodelay on;
>> server_tokens off;
>> keepalive_timeout 60;
>> reset_timedout_connection on;
>> if_modified_since before;
>>
>> proxy_buffer_size 128k;
>> proxy_buffers 24 32k;
>> proxy_busy_buffers_size 256k;
>> proxy_temp_file_write_size 4m;
>>
>> client_header_buffer_size 8k;
>> large_client_header_buffers 8 128k;
>> client_body_buffer_size 256K;
>>
>> server_names_hash_max_size 4096;
>> server_names_hash_bucket_size 128;
>> map_hash_max_size 8500;
>> proxy_headers_hash_bucket_size 128;
>>
>> gzip on;
>> gzip_types text/plain text/css text/xml application/xml application/x-javascript application/javascript application/json application/rss+xml application/rss application/x-rss+xml;
>> gzip_http_version 1.1;
>> gzip_min_length 900;
>> gzip_comp_level 7;
>> gzip_proxied any;
>> gzip_buffers 32 8k;
>> gzip_disable msie6;
>>
>> proxy_cache_path /var/lib/nginx/cache levels=1:2 keys_zone=C1:20m inactive=24h max_size=20000m;
>> proxy_cache_use_stale updating error timeout invalid_header http_500 http_502 http_503 http_504;
>> proxy_cache_background_update on;
>> proxy_temp_path /var/run/nginx/proxy;
>> proxy_cache_lock on;
>> proxy_cache_lock_timeout 25s;
>> proxy_cache_methods GET HEAD;
>> proxy_cache_valid 404 1m;
>>
>> open_file_cache max=1024 inactive=30s;
>> open_file_cache_valid 60s;
>> open_file_cache_min_uses 2;
>> open_file_cache_errors on;
>> open_log_file_cache max=100 inactive=30s valid=1m min_uses=2;
>> }
>>
>>
>> к слову, на новом стенде cache выел всего 300 Мб из 10-20 Гб разрешённых (а на рабочем старом стенде вообще пишется в RAM /var/run — и всё там ок)
>> нюанс в том, что эта конфигурация отлично работает на старом сервере рядом, где только Ubuntu более старая
>>
>>> On 31 Aug 2020, at 14:19, Илья Шипицин <chipitsine на gmail.com <mailto:chipitsine на gmail.com>> wrote:
>>>
>>> Посмотрите, не увеличивается ли у вас число воркеров.
>>>
>>> Ещё поможет вывод nginx -V
>>>
>>> И поможет конфиг
>>>
>>> On Mon, Aug 31, 2020, 1:51 PM Alexey Galygin <mif на me.com <mailto:mif на me.com>> wrote:
>>> привет всем
>>>
>>> случилось странное, переехали на сервера по параметрам в разы большие, чем сейчас (с нескромными 256 Гб RAM+ 100 Гб swap (из всех параметров влияния на штатные параметры sysctl осталось отключение ipv6 и swapness выставленный в 10%))
>>>
>>> через 5 минут после старта nginx ест всю память и весь swap! (см. https://prnt.sc/u8nia0 <https://prnt.sc/u8nia0>)
>>> в итоге сервер умирает, никогда такого не видели, это же кэширующий прокси, а не БД!…
>>>
>>> пускаем на Ubuntu 20.04 Server LTS (5.4.0-42-generic #46-Ubuntu SMP Fri Jul 10 00:24:02 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux)
>>> нагруженный nginx 1.18 (пробовали из официальных репок ставить на хост nginx/stable 1.18.0-1~focal amd64 и в контейнер из официального докера nginx:1.18.0)
>>>
>>> из особенностей используются ngx_http_js_module.so — для исторического escape/unescape URI и ngx_http_image_filter_module.so — для подрезки изображений
>>>
>>> исключили уже всё — и zfs, который переформатировали в ext4 с отключенным atime
>>> и из docker вынесли nginx в хост
>>>
>>> и внутренние системы исключили…
>>>
>>> меняли конфиги, отключали sendfile, кэши open-файлов, включали aio…
>>>
>>> упорно кончается вся память через 5 минут, все 256 Гб и своп
>>>
>>> идей практически не осталось, куда можно ещё копать?
>>> _______________________________________________
>>> nginx-ru mailing list
>>> nginx-ru на nginx.org <mailto:nginx-ru на nginx.org>
>>> http://mailman.nginx.org/mailman/listinfo/nginx-ru <http://mailman.nginx.org/mailman/listinfo/nginx-ru>_______________________________________________
>>> nginx-ru mailing list
>>> nginx-ru на nginx.org <mailto:nginx-ru на nginx.org>
>>> http://mailman.nginx.org/mailman/listinfo/nginx-ru <http://mailman.nginx.org/mailman/listinfo/nginx-ru>
>> _______________________________________________
>> nginx-ru mailing list
>> nginx-ru на nginx.org <mailto:nginx-ru на nginx.org>
>> http://mailman.nginx.org/mailman/listinfo/nginx-ru <http://mailman.nginx.org/mailman/listinfo/nginx-ru>_______________________________________________
>> nginx-ru mailing list
>> nginx-ru на nginx.org <mailto:nginx-ru на nginx.org>
>> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mailman.nginx.org/pipermail/nginx-ru/attachments/20200831/ab1652ad/attachment-0001.htm>
Подробная информация о списке рассылки nginx-ru