оговорюсь, это мое ИМХО. представьте: у вас высоконагруженный сервер почты. у вас тысячи подключений из внешнего мира от чужих серверов по smtp и постфикс ставит себя в привилегированое положение: он открыл и держит подключение, даже если ему передавать нечего. когда таких постфиксов мало - ничего, фиг с инми. а когда у вас выбирается ограничение в 1000 сокетов и вы обнаруживаете, что половина - абсолютно пустые вас это начинает раздражать. вы вводите ограничение на время активности подкючения: если по каналу не передаются данные в течении например 30 секунд - сокет принудительно закрывается. все отлично. число линков резко падает. у вас держится например 50 постоянно открытых сокетов. и вдруг раздается тревожный звоночек от руководства: "мне не приходит письмо!!!" вы копаетесь в логах и обнаруживаете, что подключение от передающего сервера было, письма приходили а вот этого письма-то как раз и нет! позже выясняется, что письмо было размером 2 мб, а другие пришедшие от него же размером в 1мб. вы видите подключение в заданный момент времени, а данных НЕТ. за те 30 секунд, которые вы дали на активность данные от того постфикса передаваться не начали - соединени закрылось с вашей стороны. постфиксу письмо упало в очередь, он открыл соединение, начал обрабатывать письмо фильрами, но из-за высокой нагрузки оно не начало передаваться за 30 секунд! соединение закрыто, внутренняя ошибка сервера. он ничего не говорит отправляющему, пытается пердать еще через некоторое время. ситуация повторяется. отправитель не в курсе. получатель ждет. все бесятся, шишки - на админа сервера qmail, у которого с других серверо приходят письма за сукунду. тамошний отправитель отправляет письмо на соседний постфикс. два высоконагруженых постфикса скрипят-скрипят но содинение между ними наличествует и не закрывается и письмо долетает. все рады. админ постфикса - молодец, не смотря на то, что его сервер еле дышит и открыл во мнешний мир и из внешнего мира максимальное количество сокетов! админ qmail ищет способ без поднятия таймаута получить таки письмо от этого скрипучего трактора. поднять таймаут - значит обречь себя на множество бессмысленно занятых системных ресурсов. дилема!разрулил. поднял таймаут или еще что-то сделал. вычислил. все довольны и все получили свою почту. теперь получатель отправляет ответ. ответ не уходит! тамошний постфикс выжрал все доступные сокеты на свои нужды. они пустуют, но он их упорно держит. и не хочет принимать еще одно соединение. час пик. разгар рабочего дня. он сам захлебнулся в своих испражнениях. но от понимания этого не легче. господа, если не знаете - ставьте exchange прикрыв его sendmail'ом. пожалейте людей
|