Назад | Перейти на главную страницу

TCP-соединения Apache2 / Shibboleth застряли в CLOSE_WAIT

Я запускаю сервер Apache2, который использует демон Shibboleth (shibd) в качестве модуля федеративной аутентификации. Некоторые серверные соединения с использованием Shibboleth постоянно находятся в состоянии CLOSE_WAIT.

tcp       38      0 blah.blah:57346 shib.server.:8443 CLOSE_WAIT 
tcp       38      0 blah.blah:45601 shib.server2:8443 CLOSE_WAIT
tcp       38      0 blah.blah:41737 shib.server3:5057 CLOSE_WAIT 

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

Излишне говорить, что если накапливается достаточно соединений CLOSE_WAIT, у меня возникает проблема.

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

/etc/init.d/networking restart

не работает. На самом деле сеть, кажется, отказывается закрываться и перезапускаться, и я получаю SIOCADDRT: File exists error (т.е. сеть пытается запуститься, не остановившись заранее). Та же проблема с ifup -a

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

  1. Какой хороший способ принудительно перезапустить сеть и очистить все соединения, застрявшие в CLOSE_WAIT?
  2. Есть идеи о том, как исправить shibboleth и заставить модуль shibd вести себя?

К сожалению, ответ на 1 - перезапустить процесс, который все еще имеет ссылки на соединения. Больше ничего не заставит close их.

Спустя восемь лет, семь месяцев и другая учетная запись Stack Exchange, а shibd (теперь в новой версии) все еще имеет такое поведение.

Наилучший, но совершенно неуклюжий способ решения проблемы - использовать crontab примерно раз в день для запуска.

service shibd restart

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