Связаться по:
vkarabedyants Telegram Viber
+7 (499) 350-10-69

Блог о системном администрировании серверов и сайтов

Установка, настройка программного обеспечения Linux, Windows операционных систем

Почему не работает прокси-сервер squid

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

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

 

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

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

не работает прокси

Первое сообщение об ошибке, указывающее, что что-то не так с нашим прокси-сервером squid.

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

Контрольный список №1: проблема с клиентом или сервером

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

ssh [email protected]

Контрольный список №2: открыт ли порт сервера?

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

$ netstat -tulpn 
$ ss -tulpn 
$ netstat -tulpn | grep 3128

Если результата нет, значит, squid не запущен. Попробуйте запустить его, запустите:

$ sudo systemctl start squid

Контрольный список № 3: работает ли прокси-сервер squid?

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

$ 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. Чтобы исправить эту проблему, вам может потребоваться остановить нежелательный процесс. Другим вариантом является добавление дополнительного ОЗУ. В моем случае у меня было более чем достаточно памяти. Оказывается, это была ошибка ядра — ошибки «Недостаточно памяти» после обновления до версии ядра 4.4.0-59 на Ubuntu 16.04 LTS:

$ uname -mrs 
Linux 4.4.0-59-generic x86_64

Конечным решением является применение исправления ядра

$ 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

И так у нас есть решение и удалось устранить проблему.

Если Вам необходима настройка прокси сервера или другие услуги администрирования, обращайтесь [email protected]

Оставить комментарий

Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.