Как узнать, почему прокси-сервер squid вышел из-за сигнала 9 со статусом 0

Как узнать, почему прокси-сервер squid вышел из-за сигнала 9 со статусом 0

Я получаю сообщение об ошибке «Прокси-сервер отказывается от соединений». Я использую Squid 3 с сервером Ubuntu Linux 16.04 LTS и как узнать, почему мой прокси-сервер squid неожиданно «умер»?

Squid является кэшированным прокси сервером с открытым исходным для Web, поддерживающим HTTP, HTTPS, FTP, и многое другое. Это уменьшает пропускную способность и улучшает время отклика путем кэширования и повторного использования. Squid «может умереть» по ряду причин. Давайте рассмотрим некоторые основные шаги, чтобы выяснить, что вызвало такие ошибки на сервере Ubuntu Linux.

Основные симптомы

Вы или пользователь можете увидеть на экране браузера следующую ошибку:

Как узнать, почему прокси-сервер squid вышел из-за сигнала 9 со статусом 0
Рисунок 01: Первое сообщение об ошибке, указывающее на то, что что-то, неверно с нашим прокси-сервером squid

Squid-прокси, подключен к сети и предоставляет прокси-сервер. Поэтому давайте начнем копаться в этой проблеме.

Инструкция #1: проблема с клиентом или сервером

Перейдите на другой клиентский браузер или компьютер и попробуйте получить доступ к интернету через прокси-сервер squid. Если этот компьютер также не может получить доступ к серверу squid, то вы знаете, что проблема более вероятна на самом сервере squid. Затем вам необходимо сфокусировать свои усилия на поиск и устранение неисправностей на сервере squid. Войдите используя ssh:

$ ssh vivek@server1.cyberciti.biz

Инструкция #2: Открыт ли порт сервера?

Введите следующую команду на сервере Ubuntu Linux, чтобы убедиться, что TCP-порт 3128 (по умолчанию) открыт:

$ ss -tulpn
$ netstat -tulpn | grep 3128

Если нет никакого вывода, то это означает, что squid не работает. Попробуйте запустить его выполнив:

$ sudo systemctl start squid

Инструкция #3: Работает ли прокси-сервер squid?

Используйте ps команду вместе с grep command  командой следующим образом:

$ ps aux | grep -i squid
$ ps aux | grep -i squid

ИЛИ же используйте команду pgrep:

$ pgrep squid

Если squid все еще не начинает работать или вовсе не запускается, проверьте другие ошибки.

Инструкция #4: Проверьте файл журнала squid или статус сервера squid

Введите следующую команду:

$ sudo systemctl status squid.

И, наконец, победа! Я нашел ошибку:

Feb 04 04:09:01 nixcraft-squid-do-0001 squid[1658]: Squid Parent: (squid-1) process 1661 exited due to signal 9 with status 0

Случайное «убийство» процесса указывает на нехватку памяти (OOM). Это частое нежелательное состояние работы компьютера, где дополнительная память не может быть выделена для использования программами или операционной системой.

Что означает сигнал 9?

Число 9 указывает, что сигнал «убивает», т. е. «убивает» текущий процесс. Естественно, кто-то «убил» процесс. Однако почему? Чтобы узнать ответ на наш вопрос, запустите:

$ dmesg | grep -i mem

или

$ dmesg | grep -i out_of_mem

Примеры возможных выводов данных:

858444.872840] lowmem_reserve[]: 0 0 0 0 0
[858444.872867] 0 pages HighMem/MovableOnly
[858444.872948] Out of memory: Kill process 1661 (squid) score 67 or sacrifice child
[860244.967476] sessionclean cpuset=/ mems_allowed=0
[860244.967512]  [] out_of_memory+0x219/0x460
[860244.967521]  [] alloc_kmem_pages_node+0x4b/0xc0
[860244.967544] Mem-Info:
                 mapped:10224 shmem:3037 pagetables:1029 bounce:0
[860244.967552] Node 0 DMA free:2136kB min:88kB low:108kB high:132kB active_anon:1824kB inactive_anon:384kB active_file:3760kB inactive_file:1776kB unevictable:68kB isolated(anon):0kB isolated(file):0kB present:15992kB managed:15908kB mlocked:68kB dirty:4kB writeback:0kB mapped:2048kB shmem:400kB slab_reclaimable:4448kB slab_unreclaimable:620kB kernel_stack:224kB pagetables:164kB unstable:0kB bounce:0kB free_pcp:0kB local_pcp:0kB free_cma:0kB writeback_tmp:0kB pages_scanned:0 all_unreclaimable? no
[860244.967558] lowmem_reserve[]: 0 454 454 454 454
[860244.967561] Node 0 DMA32 free:10596kB min:2680kB low:3348kB high:4020kB active_anon:62740kB inactive_anon:11196kB active_file:175676kB inactive_file:110160kB unevictable:3588kB isolated(anon):0kB isolated(file):0kB present:507896kB managed:484228kB mlocked:3588kB dirty:204kB writeback:0kB mapped:38848kB shmem:11748kB slab_reclaimable:75600kB slab_unreclaimable:16648kB kernel_stack:2288kB pagetables:3952kB unstable:0kB bounce:0kB free_pcp:0kB local_pcp:0kB free_cma:0kB writeback_tmp:0kB pages_scanned:0 all_unreclaimable? no

Итак, теперь вы знаете точные причины, по которым squid «умер». Для решения этой проблемы, вам может понадобиться завершить нежелательные процессы. Другой способ — это добавить оперативной памяти. В моем случае, оперативной памяти предостаточно. В итоге, оказалось, что это была ошибка ядра – ошибка «Out of memory» после обновления ядра до версии 4.4.0-59 на Ubuntu 16.04 LTS:

$ uname -mrs
Linux 4.4.0-59-generic x86_64

Конечным решением является применение исправления ядра, путем набора команды apt-get command  или apt command  следующим образом:

$ sudo apt-get update
$ sudo apt-get upgrade
## force upgrade ##
$ sudo apt-get dist-upgrade

Перезапустите Linux сервер, для этого введите:

$ sudo reboot
$ uname -mrs
Linux 4.4.0-62-generic x86_64

Теперь у вас есть достаточно информации для того, чтобы найти и решить проблему.
Я настоятельно рекомендую вам подписаться на список рассылки отслеживания ошибок или feed.

Перевод: Анна Давыдова
Источник: cyberciti.biz

Это интересно:

Оставить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *