конфигурация: linux, apache, mpm_peruser.
корч старый, тем не менее нагрузку в обычном режиме держит отлично, однако в отдельные моменты происходит странное - в нетстате появляется огромное количество соединений в статусе CLOSE_WAIT, причем в 3-4 раза большее, чем при нормальных пиках нагрузки. при этом форкается огромное количество апачей, под сотню наверное и они сжирают весь проц, хотя похоже что ничего в этом состоянии они уже не отдают.
http://upload.wikimedia.org/wikipedia/commons/a/a2/Tcp_state_diagram_fixed.svg
вот тут диаграммка, на ней видно что такое состояние возникает если открыть соединение, начать что-то делать а потом просто исчезнуть. в этом случае сервак предлагает уже не существующему в моем случае клиенту закрыть соединение и ждет ответа. если ответа нет - он его закрывает сам по таймауту. я правильно понял?
что до апача, то если возникает такая ситуация, то он висит долго и не отвисает пока его не перезагрузят руками. почему он со временем не освобождает пул - сказать трудно, но это факт. пока проблема временно решена перезапуском апача по крону каждые 10 минут.
в этой ситуации я вижу два направления деятельности:
первое - эмулировать эту атаку, чтобы крутить различные параметры и смотреть как они влияют на ее эффективность. и просто чтобы быть уверенным, что я правильно понял суть этой атаки. или не атаки, а просто некорректной работы клиентов. вообще есть версия что это хромые китайские пауки, где-то я уже про такое слышал.
второе - есть идея покрутить net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60 - помоему это оно. какие могут быть побочки?
кстати снова набежали, пойду понаблюдаю.