Hello! On Mon, Jan 10, 2022 at 05:40:44PM +0300, Дугин Сергей wrote:
> Помогите nginx в течении часа после запуска начинает жрать порядка 60-70 > гигобайт памяти и дальше растет > не хвтает свапа и сервер перегружать приходится если вовремя не килнуть и не > перезапустить nginx > Скриншот прилагаю. > Была более старая версия, таже была проблема. > > В логе ошибок > error_log /var/log/nginx/error.log warn; > Ошибок нет > > Меня смущает только такие параметры в nginx: > server_names_hash_max_size 131070; > server_names_hash_bucket_size 128; > > Но если делать меньше nginx не запускается, так как порядка 2000 доменов в > конфиге прописано. Подбирал эти числа на практике. > Но даже с ними не понятно почему пару процессов nginx отжирают по 30 гиг RAM Эти параметры точно ни при чём: хэши строятся один раз при чтении конфига, и не могут приводить к последующему росту потребления памяти отдельными рабочими процессами. > Больше идей нет, есть у кого-нибудь мысли как можно починить ситуацию? А что при этом в конфиге? В частности, worker_connections и всевозможные буфера (client_header_buffer_size, large_client_header_buffers, client_body_buffer_size, proxy_buffer_size, proxy_buffers, output_buffers и так далее)? Если включён HTTP/2 - то ещё и http2_max_concurrent_streams. Отдельно интересно нет ли в конфиге сторонних модулей. А если есть, то воспроизводится ли проблема без них. [...] > cat /etc/os-release > NAME="CloudLinux" > VERSION="7.9 (Boris Yegorov)" > ID="cloudlinux" > > Linux 3.10.0-962.3.2.lve1.5.42.el7.x86_64 #1 SMP Mon Nov 9 08:11:18 EST 2020 > x86_64 x86_64 x86_64 GNU/Linux > > > top - 17:33:50 up 12:18, 1 user, load average: 13.88, 13.09, 12.50 > Tasks: 909 total, 7 running, 901 sleeping, 0 stopped, 1 zombie > %Cpu(s): 12.1 us, 4.8 sy, 0.1 ni, 82.2 id, 0.3 wa, 0.0 hi, 0.6 si, 0.0 > st > KiB Mem : 13182188+total, 4598376 free, 75250656 used, 51972864 buff/cache > KiB Swap: 10077298+total, 96888000 free, 3884988 used. 44158760 avail Mem > > PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND > 12785 root 20 0 35.0g 34.0g 2440 S 28.0 27.1 10:43.40 nginx > 12807 root 20 0 14.4g 13.4g 2448 S 29.6 10.6 4:22.15 nginx > 12805 root 20 0 2904776 1.8g 2588 S 3.0 1.4 1:10.02 nginx > 12802 root 20 0 2880556 1.8g 2432 S 2.0 1.4 0:52.17 nginx > 12799 root 20 0 2859616 1.8g 2452 S 1.6 1.4 0:31.47 nginx Судя по всему, растут те процессы, которые собственно занимаются обработкой соединений: на современных линуксах распределение соединений между рабочими процессами может быть сильно неравномерным, лечить проще всего включением accept_mutex'а (https://trac.nginx.org/nginx/ticket/2285). Почему растут - отдельный вопрос. Для начала, наверное, стоит посмотреть, до какого размера процессы могут расти по памяти в соответствии с текущими настройками. Грубая оценка максимального потребления памяти одним рабочим процессом - worker_connections * <сумма всех буферов>. Если она не превышена - то вопрос, скорее, в настройках, не соответствующих имеющемуся объёму памяти. Если превышена - то имеет смысл разбираться дальше. -- Maxim Dounin http://mdounin.ru/ _______________________________________________ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru