.
25 марта 2010

Быстрая и эффективная оптимизация сервера

posted in NIX |

Собственно в продолжение предыдущего поста Upgrade выделенного сервера на keyweb.ru — жестокие условия:
Так как «слёту» решить проблему путем апргейда железа у меня не вышло, а пойти на предложенные условия рука не поднялась (не люблю чувствовать себя лохом — а в кейвебе поначалу именно так предлагали себя почувствовать), остался ещё один эффективный для меня вариант (эффективный — потому, что ранее оптимизацией работы сервера я не занимался и 100% был уверен, что выполнив такую работу можно добиться значительного снижения нагрузки).
Не являясь гуру в unix администрировании я отправился гуглить — собственно нагуглил простой и эффективный способ снижения нагрузки — поставить фронтендом nginx — отказоустойчивый сервер для ресурсов с высоким трафиком.
О возможностях этого сервера я был ранее наслышан и сомнений в принятом решении у меня не возникло.
Сказано — сделано:
Поставил из портов nginx, снял индейца с 80ого порта — поставил nginx слушать 80й и обрабатывать всю статику — динамику перенаправил апачу.
Тесты поразили !
Даже визуально при малой загрузке стал заметен прирост в быстродействии !
Посмотрел процессы и остался доволен — на будущее если такой связки станет недостаточно — оставил возможность полного отказа от апача и перехода на связку nginx + php-fpm + memcache + eaccelerator (так сказать оставил на десерт).

Так как у меня на некоторых доменах были настроены авто сабдомены, пришлось погуглить на тему как это реализуется в nginx:
Автосабдомены в nginx

server {
    listen 80;
    server_name example.com *.example.com;
    root /var/www/example.com/$subdomain;
    set $subdomain "";
    if ($host ~* ^([a-z0-9-\.]+)\.example.com$) {
        set $subdomain $1;
    }
    if ($host ~* ^www.example.com$) {
        set $subdomain "";
    }
}

В итоге — полчаса работы — проблема решена (на текущий момент).

Так же в настройке nginx-а и понятии принципа работы помог следующий материал:

Осталось только проброс IP шников доделать и усё — этим я щас и займусь.

Кстати — очень интересует момент — как посмотреть в такой связке nginx+apache какие странички отдаются в текущий момент времени? То есть (не дай бог конечно) но снова сервак встанет в ступор — хотя бы посмотреть из за кого именно. Буду рад если подскажете.
Если, что нагуглю в решении этого вопроса — попробую реализовать и конечно же отпишусь.

Яндекс.Метрика