В документе "Hacking Apache HTTP Server at Yahoo! (http://public.yahoo.com/~radwin/talks/yapache-apachecon2005.htm)" (PDF версия (http://public.yahoo.com/~radwin/talks/yapache-apachecon2005.pdf)) рассказывается как организована работа Apache на серверах работающих под управлением FreeBSD и Linux в Yahoo, какие действия предпринимаются для того чтобы выжать максимальную производительность.
Во второй презентации "HTTP Caching and Cache-busting for Content Publishers (http://public.yahoo.com/~radwin/talks/http-caching-apachecon...)" (PDF версия (http://public.yahoo.com/~radwin/talks/http-caching-apachecon...)) говориться об используемых в Yahoo технологиях кэширования динамического и статического контента.
В 2002 году Yahoo перешла на использование PHP в качестве основного языка для web-разработки, в обзоре "PHP at Yahoo! (http://public.yahoo.com/~radwin/talks/php-at-yahoo-zend2005.pdf)" показано как удалось вписать PHP в инфраструктуру Yahoo и почему был выбран именно PHP. Основная дилемма была mon_php или mod_perl, по производительности при большой нагрузке mod_perl выигрывал, но требовал для работы больше памяти.На сайте Игоря Сысоева можно найти (http://www.sysoev.ru/#13.01.2006) интересный комментарий, по вопросу оптимизации через увеличение буфера сокета во FreeBSD, позволю себе процитировать текст:
"<small>Время общения Apache с клиентом сведено к минимуму — ровно для того, чтобы скопировать запрос и ответ: сначала запрос клиента полностью принимается accept-фильтром httpready, а затем весь ответ записывается в огромный, 224K, буфер сокета, после чего сокет сразу же закрывается (-DNO_LINGCLOSE). У этого метода есть и преимущества, и недостатки. Один из недостатков — суммарный объём данных, который можно использовать под буфера сокетов (mbuf clusters) около 360M, по крайней мере, во FreeBSD/i386 4.x с адресным пространством ядра в 1G. Это означает, что при среднем размере ответа в 50K одна машина может обслуживать примерно до 7,000 одновременных соединений. Впрочем, во FreeBSD 6.0 и на amd64 этот объём должен быть больше. Кроме того, адресное пространство ядра может увеличить до 2G или даже до 3G. Одно из преимуществ — возможность быстро отдавать в большое TCP window клиента, но, с другой стороны, без keep-alive это окно приходится разгонять каждый раз заново.</small>"
URL: http://public.yahoo.com/~radwin/talks/yapache-apachecon2005.htm
Новость: http://www.opennet.me/opennews/art.shtml?num=6887
В тексте не говорится, что в Yahoo работают сервера под Linux.
Но, тем не менее, упоминается как увеличивать SendBufferSize и для Фри, и для Линуха.
а что будет если ответ превышает 224 кб ?
будет резаться на части по 224 ?
Нет, не будет резаться. По мере освобождения буфера Апач будет добавлять в него данные. Проблема в том, что если клиент медленный, то Апач будет его ждать в течение времени, необходимого для передачи полного ответа минус 224К. Очевидно, ответы этих серверов укладываются в 224К.
А что, если ответ укладывается в 224К - то Апач его засунет в буфер, и на этом обработку запроса закончит? Т. е. сразу будет готов работать с другим подключением?
При условии, что Апач собран с -DNO_LINGCLOSE, да, сразу готов работать с другим соединением.
Лесом ответ такого размера. Хотя всякое случается...
Там Linux/FreeBSD
Вот тут можно посмотреть, на чем Максим этот сервер (http://www.opennet.me/) делал (вторая половина странички):
http://www.opennet.me/guide.shtml