SYN/ACKîïöèè KeepAliveTimeout áóäåò 5-10 ñåêóíä, ïðè÷åì, åñëè âñå çàâèñèìûåêîìïîíåíòû ñòðàíèöû îòäàþòñÿ êëèåíòó îòäåëüíûìè ñåðâåðàìè, à òåêóùèéñåðâåð èñïîëüçóåòñÿ òîëüêî äëÿ îòäà÷è HTML/PHP, íåîáõîäèìîñòüïîääåðæêè keep-alive îòïàäàåò âîâñå, è çíà÷åíèå îïöèè KeepAlive ëó÷øåóñòàíîâèòü â Off.• Apache íå ëþáèò ñæàòèå. Åñëè òû ðåøèë óâåëè÷èòü ñêîðîñòü îòäà÷è ñòðàíèöñ ïîìîùüþ ñæàòèÿ, òî èìåé â âèäó, ÷òî, ñêîðåå âñåãî, îíî ñîçäàñò åùåáîëüøóþ íàãðóçêó íà ñåðâåð. Åñëè æå ñæàòèå äåéñòâèòåëüíî íåîáõîäèìî(íàïðèìåð, äëÿ ìîáèëüíîãî ïîðòàëà, îñíîâíîé ïîòîê êëèåíòîâ êîòîðîãîèñïîëüçóåò êàíàë GPRS), òî óñòàíàâëèâàé êîýôôèöèåíò ñæàòèÿ ìèíèìàëüíûì,ýòî ïðèâåäåò ëèøü ê íåçíà÷èòåëüíîìó ðîñòó îáúåìà ðåçóëüòèðóþùèõäàííûõ, çàòî ïîçâîëèò ñóùåñòâåííî ñýêîíîìèòü ðåñóðñû ñåðâåðà.ïîýòîìó ìû ïðèìåíèì èíñòðóìåíò ïîä íàçâàíèåì eAccelerator, êîòîðûéñêîìïèëèðóåò èñõîäíûå òåêñòû PHP â äâîè÷íîå ïðåäñòàâëåíèå, îïòèìèçèðóåòèõ è áóäåò áåðåæíî õðàíèòü â îïåðàòèâíîé ïàìÿòè äëÿ áîëåå áûñòðîãîäîñòóïà. Áëàãîäàðÿ òîëüêî ýòîìó ñêîðîñòü îáðàáîòêè PHP-ñêðèïòîââûðàñòåò â äåñÿòêè ðàç (ïîäòâåðæäåíî òåñòàìè).Ïàêåòà eAccelerator íåò â ðåïîçèòîðèÿõ ïîïóëÿðíûõ äèñòðèáóòèâîâ,ïîýòîìó åãî ïðèäåòñÿ ñîáðàòü ñàìîñòîÿòåëüíî. Ñíà÷àëà óñòàíàâëèâàåìíåîáõîäèìûå äëÿ ñáîðêè óòèëèòû:$ sudo apt-get install php5-dev build-essentialÄàëåå ïîëó÷àåì èñõîäíûå òåêñòû eAccelerator:ОПТИМИЗАЦИЯ PHPÇà÷àñòóþ íàèáîëüøàÿ íàãðóçêà ñîçäàåòñÿ âîâñå íå HTTP-ñåðâåðîì, à èíòåðïðåòàòîðîìÿçûêà ïðîãðàììèðîâàíèÿ, èñïîëüçóåìîãî äëÿ ñîçäàíèÿäèíàìè÷åñêîãî ñîäåðæèìîãî âåá-ñàéòà. Ñåãîäíÿ íàèáîëåå ïîïóëÿðíûìÿçûêîì äëÿ ñåðâåðíîãî âåá-ñêðèïòèíãà ÿâëÿåòñÿ PHP, ïîýòîìó èìåííîåìó ìû óäåëèì âíèìàíèå â íàøåé ñòàòüå. Îòêðûâàåì ôàéë /etc/php5/apache2/php.ini (ïóòü äëÿ Ubuntu, â äðóãèõ äèñòðèáóòèâàõ ìîæåò áûòüèíûì) è ðåäàêòèðóåì ñëåäóþùèå ñòðîêè:• memory_limit — ëèìèò íà ñúåäàåìóþ ïðè ãåíåðàöèè âåá-ñòðàíèöûïàìÿòü. Ïåðåä èçìåíåíèåì ýòîãî ïàðàìåòðà ðåêîìåíäóåòñÿ âûïîëíèòüñîîòâåòñòâóþùèå çàìåðû è îñíîâûâàòü çíà÷åíèå óæå íà èõ ðåçóëüòàòàõ.• display_errors = Off, error_log = /var/log/php — ïåðåíàïðàâëÿòü ñîîáùåíèÿîá îøèáêàõ â log-ôàéë. Âêëþ÷àé ýòîò ïàðàìåòð òîãäà, êîãäà âñåñêðèïòû áóäóò ïîëíîñòüþ îòëàæåíû.• upload_max_filesize è post_max_size — ìàêñèìàëüíûé ðàçìåð çàãðóæàåìûõôàéëîâ è POST-çàïðîñîâ. Îïÿòü æå, çíà÷åíèå äîëæíî áûòü âûáðàíîèñõîäÿ èç ïîòðåáíîñòåé òâîåãî âåá-ïðèëîæåíèÿ.Òåïåðü ìîæíî çàêðûòü ôàéë è âûïîëíèòü ãëóáîêóþ îïòèìèçàöèþ ñ ïîìîùüþPHP-óñêîðèòåëÿ.УСТАНОВКА EACCELERATORPHP — ÿçûê èíòåðïðåòèðóåìûé. Ýòî çíà÷èò, ÷òî êàæäûé ðàç, êîãäàïðîèñõîäèò âûçîâ ñêðèïòà íà ýòîì ÿçûêå, çàïóñêàåòñÿ PHP-èíòåðïðåòàòîð,êîòîðûé ïðîâîäèò ïîëíûé àíàëèç èñõîäíîãî êîäà. Ïðè÷åì, åñëèñïóñòÿ ñåêóíäó ïðîèçîéäåò âòîðîé çàïóñê òîãî æå ñêðèïòà, âñÿ ïðîöåäóðàáóäåò ïîâòîðåíà çàíîâî. Ýòî íåðàöèîíàëüíîå èñïîëüçîâàíèå ðåñóðñîâ,128$ cd /tmp/$ wget http://bart.eaccelerator.net/source/0.9.6.1/eaccelerator-0.9.6.1.tar.bz2$ tar xvjf eaccelerator-0.9.6.1.tar.bz2$ cd eaccelerator-0.9.6.1$ phpize$ ./configure --enable-eaccelerator=shared$ make$ sudo make installÑîçäàåì êàòàëîã äëÿ õðàíåíèÿ êýøà:$ sudo mkdir -p /var/cache/eaccelerator$ sudo chmod 0777 /var/cache/eacceleratorÈ, íàêîíåö, ïîäêëþ÷àåì eAccelerator ê PHP (äîáàâèòü â íà÷àëî ôàéëà):# vi /etc/php5/apache2/php.ini[PHP]; Ïîäêëþ÷àåì ðàñøèðåíèåextension = "eaccelerator.so"eaccelerator.enable = "1"; Ìàêñèìàëüíûé ðàçìåð äèñêîâîãî êýøà (Ìá)eaccelerator.shm_size = "64"; Êàòàëîã äëÿ õðàíåíèÿ êýøàeaccelerator.cache_dir = "/var/cache/eaccelerator"XÀÊÅÐ 08 /139/ 10
Apache с различными MPM-модулями в Ubuntuphpinfo() для eAcceleratorНастраиваем Nginx; Âêëþ÷àåì îïòèìèçàòîð êîäàeaccelerator.optimizer = "1"; Ïåðåêîìïèëèðîâàòü ìîäèôèöèðîâàííûå ñêðèïòûeaccelerator.check_mtime = "1"; Îòêëþ÷àåì ðåæèì îòëàäêèeaccelerator.debug = "0"; Êýøèðîâàòü âñå ôàéëû (ïóñòîé ôèëüòð)eaccelerator.filter = ""; Íåîãðàíè÷åííûé ðàçìåð êýøà â ïàìÿòèeaccelerator.shm_max = "0";  ñëó÷àå îòñóòñòâèÿ ìåñòà â êýøå óäàëÿòü îáúåêòû ñòàðøå1 ÷àñà (3600 ñåêóíä)eaccelerator.shm_ttl = "3600"eaccelerator.shm_prune_period = "0"; Êýøèðîâàòü äàííûå è â ïàìÿòè, è íà äèñêåeaccelerator.shm_only = "0"; Ñæèìàòü êýøèðîâàííûå äàííûå ñ ìàêñèìàëüíûì óðîâíåì êîìïðåññèèeaccelerator.compress = "1"eaccelerator.compress_level = "9"È äåëî òóò äàæå íå â òîì, ÷òî æåëåçî íå ïîçâîëÿåò, à â òÿæåëîâåñíîñòè ñàìîãîHTTP-ñåðâåðà. Apache îòëè÷íî ïîäõîäèò äëÿ îòäà÷è äèíàìè÷åñêîãîêîíòåíòà, îäíàêî áîëüøàÿ ÷àñòü ñîâðåìåííûõ âåá-ñòðàíèö òàê èëè èíà÷åñîñòîèò èç ñòàòèêè, è èñïîëüçîâàòü äëÿ èõ îòäà÷è ìîùíûé, ñëîæíûé èî÷åíü òÿæåëûé HTTP-ñåðâåð áûëî áû òàê æå ãëóïî, êàê åçäèòü íà âåçäåõîäåïî äîðîãàì Øâåéöàðèè. Ìû âîñïîëüçóåìñÿ ëåãêîâåñíûì HTTP-ñåðâåðîìNginx äëÿ ðàçãðóçêè Apache è åãî îñâîáîæäåíèÿ îò íåáëàãîäàðíîãîçàíÿòèÿ îòäà÷åé ñòàòè÷åñêîãî êîíòåíòà.  îòëè÷èå îò Apache, Nginxèñïîëüçóåò ñîáûòèéíóþ ìîäåëü îáðàáîòêè çàïðîñîâ, áëàãîäàðÿ ÷åìó íàëþáîå êîëè÷åñòâî êëèåíòîâ òðåáóåòñÿ âñåãî îäèí ïðîöåññ HTTP-ñåðâåðà.Ýòî ñóùåñòâåííî ñíèæàåò íàãðóçêó íà æåëåçî, íî ñîçäàåò îïðåäåëåííûåïðîáëåìû ïðè îáðàáîòêå äèíàìè÷åñêîãî êîíòåíòà (èìåííî ïîýòîìó åãîíå èñïîëüçóþò â êà÷åñòâå îñíîâíîãî HTTP-ñåðâåðà). Îáû÷íî Nginx óñòàíàâëèâàþòíà âûäåëåííóþ ìàøèíó, êîòîðàÿ ñìîòðèò âî âíåøíþþ ñåòüè âûñòóïàåò â êà÷åñòâå ïåðâîãî ÷åêïîèíòà íà ïóòè ñëåäîâàíèÿ çàïðîñîâ,îäíàêî äîïóñòèì è âàðèàíò ñ îäíèì ôèçè÷åñêèì ñåðâåðîì, êîãäà Apacheè Nginx êðóòÿòñÿ íà îäíîé ìàøèíå. Îñòàíîâèìñÿ íà íåì. Îòêðûâàåìôàéë /etc/apache2/ports.conf è èçìåíÿåì äâå îïöèè:NameVirtualHost *:81Listen 81Äàëåå óñòàíàâëèâàåì Nginx:$ sudo apt-get install nginxÎòêðûâàåì êîíôèãóðàöèîííûé ôàéë è ïèøåì â íåãî ñëåäóþùåå:УСТАНОВКА NGINXÁóäó÷è ïîïóëÿðíûì, áîëüøîé äèíàìè÷åñêèé âåá-ñàéò ìîæåò ñîçäàòü òàêóþíàãðóçêó íà ñåðâåð, ÷òî Apache íà÷íåò «çàõëåáûâàòüñÿ è ïëåâàòüñÿ».ÁàëàíñèðîâêàRound robin DNS — îäèí èç ñàìûõ ïðîñòûõ âèäîâ áàëàíñèðîâêèíàãðóçêè. Äëÿ åå ðåàëèçàöèè äîñòàòî÷íî ïðèñâîèòüIP-àäðåñà äâóõ èëè áîëåå ñåðâåðîâ îäíîìó äîìåííîìó èìåíè.Îäíàêî, åñòü è ñóùåñòâåííûé ìèíóñ: åñëè îäèí èç ñåðâåðîââûéäåò èç ñòðîÿ, ÷àñòü êëèåíòîâ âñå ðàâíî áóäóò îòïðàâëåíûê íåìó.XÀÊÅÐ 08 /139/ 10# vi /etc/nginx/nginx.conf# Nginx-ïîëüçîâàòåëüuser www-data;# Êîëè÷åñòâî Nginx-ïðîöåññîâ ñòàâèì ðàâíûì êîëè÷åñòâóïðîöåññîðíûõ ÿäåðworker_processes 1;error_log /var/log/nginx/error.log;pid /var/run/nginx.pid;events {worker_connections 1024;}http {129