Устранение ошибки "Нет такого файла или каталога", вызванной несоответствиями между конфигурацией мониторинга Monit и PHP-FPM.

Кровавая бойня, вызванная цепочкой контактов разъема.

История такова.

У меня есть друг, у которого в прошлом месяце снова сломался сервер.

Он пришел ко мне и сказал, что Monit постоянно выдает ошибки, сообщая, что не может найти файл сокета php-fpm, после чего служба начала часто перезапускаться, и нагрузка резко возросла. В три часа ночи ему позвонили по экстренному вызову, чтобы он починил сервер.

Я же говорил тебе не паниковать и показать мне журналы мониторинга.

Когда я посмотрел на это, я был поражен: там было полно подобных ошибок:

ошибка: Ошибка подключения к сокету Unix /run/php/php8.4-fpm.sock — Нет такого файла или каталога ошибка: 'php8.4-fpm' faiтест протокола светодиодов [DEFAULT] в /run/php/php8.4-fpm.sock — Невозможно создать сокет Unix для /run/php/php8.4-fpm.sock

Я спросил его: «Где теперь ваш файл сокета?»

Он сказал, что не знает, поэтому я просто установил его с настройками по умолчанию.

Я же просил подождать, я сейчас проверю.

Затем я подключился по SSH и увидел, что его файл сокета назывался... /run/php/php8.4-fpm-etufo.org.sock.

Я сказал: "Дружище, путь к сокету — это две разные вещи, было бы чудом, если бы они могли взаимодействовать".

Сегодня я подробно разберу эту проблему и предложу её решение.

Вы думаете, что слежка вас защищает, но на самом деле она вам вредит.

Начнём с обсуждения наиболее распространённого типа ошибок в журналах мониторинга.

Когда вы это увидите:

Ошибка: Ошибка подключения к сокету Unix /run/php/php8.4-fpm.sock — Нет такого файла или каталога

Это указывает на то, что Monit пытается обнаружить службу php-fpm через этот сокет, но не может найти файл.

Далее monit попытается перезапустить службу, и в логах отобразится следующее:

info: 'php8.4-fpm' попытка перезапуска info: 'php8.4-fpm' остановка: '/usr/sbin/service php8.4-fpm stop' info: 'php8.4-fpm' запуск: '/usr/sbin/service php8.4-fpm start'

Выглядит довольно умно, правда? Оно самовосстанавливается автоматически.

Но проблема в том, что именно частые перезагрузки и являются настоящей катастрофой.

Представьте себе: при перезапуске php-fpm все обрабатываемые в данный момент запросы прерываются, все сессии могут быть потеряны, и все соединения необходимо будет устанавливать заново. Если перезапуск будет повторяться и завершаться с ошибкой в ​​течение короткого периода времени, нагрузка на сервер резко возрастет.

Журналы также раскроют дополнительную информацию, например, такую:

ошибка: 'etНЛО.org' loadavg (15min) of 8.8 matches resource limit [loadavg (15min) > 8.0] error: 'etНЛОИспользование ЦП системой .org составляет 33.9%, что соответствует лимиту ресурсов [использование ЦП системой > 30.0%].

Сервер и так был сильно загружен, но система мониторинга продолжала постоянно перезапускать службу. Это не тушило пожар, а лишь подливал масла в огонь.

Суть проблемы: ключ и замок не подходят друг к другу.

При более внимательном рассмотрении проблема оказывается довольно простой.

Путь к сокету, указанный в конфигурационном файле monit, следующий:/run/php/php8.4-fpm.sock

Однако фактический путь к сокету, через который работает php-fpm, следующий:/run/php/php8.4-fpm-etufo.org.sock

Если одна функция предназначена для обнаружения файла A, а другая на самом деле является файлом B, то обнаружение, очевидно, не удастся.

Это что-то невероятное.

У вас есть ключ, запертый в другой комнате.

Вы каждый день открываете дверь ключом, но каждый раз обнаруживаете, что она не открывается, и тогда говорите, что замок сломан.

На самом деле, замок не сломан; просто ваш ключ не подходит к замку.

решатьМониторинг мониторингаКонфигурация несовместима с PHP-FPM.

Устранение ошибки "Нет такого файла или каталога", вызванной несоответствиями между конфигурацией мониторинга Monit и PHP-FPM.

Вариант 1: Изменить конфигурацию монитора.

Если вы хотите сохранить существующую конфигурацию сокетов php-fpm, измените конфигурацию monit.

Найдите файл конфигурации monit и внесите следующие изменения:

if failed unixsocket /run/php/php8.4-fpm.sock then restart

Измените его на:

if failed unixsocket /run/php/php8.4-fpm-chenweiliang.com.sock then restart

Затем выполните перезагрузку:

sudo monit reload

Вот и все.

Вариант 2: Изменить конфигурацию php-fpm.

Если вы хотите использовать путь по умолчанию, измените конфигурацию пула php-fpm.

编辑 /etc/php/8.4/fpm/pool.d/chenweiliang.com.confИзмените команду прослушивания на:

listen = /run/php/php8.4-fpm.sock

Затем перезапустите php-fpm:

sudo systemctl restart php8.4-fpm

Вот и все.

Оба решения могут устранить проблему; выбор зависит от ваших конкретных обстоятельств.

Сколько сайтов размещено на вашем сервере? У каждого сайта свой отдельный сокет? Если сайтов всего один, то путь по умолчанию будет проще.

Позвольте мне высказаться от всего сердца.

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

Если путь к сокету указан неправильно, на первый взгляд всё может казаться спокойным, но в действительности система мониторинга будет выдавать ложные тревоги, служба будет произвольно перезапускаться, а нагрузка будет необъяснимо резко возрастать.

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

Как однажды сказал один из старших коллег: «Точность мониторинга — это первая линия защиты для обеспечения стабильности работы сервиса».

Успех или неудача зависят от деталей, и это абсолютно верно в серверной среде.

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

Спасибо за прочтение моей статьи. До встречи в следующий раз.

Блог Хоуп Чен Вейлян ( https://www.chenweiliang.com/ Статья «Решение проблемы „Нет такого файла или каталога“ в конфигурации мониторинга Monit и PHP-FPM», размещенная здесь, может оказаться вам полезной.

Добро пожаловать, чтобы поделиться ссылкой на эту статью:https://www.chenweiliang.com/cwl-34000.html

Чтобы раскрыть еще больше скрытых трюков🔑, присоединяйтесь к нашему каналу в Telegram!

Поделитесь и поставьте лайк, если вам понравилось! Ваши репосты и лайки — наша постоянная мотивация!

 

发表 评论

Ваш адрес электронной почты не будет опубликован. 必填 项 已 用 * 标注

Наверх