nginx, php-fmp, memcached, eAccelerator и tmpfs

Захотелось мне сделать что-то глобальное и много мощное. И занялся я оптимизацией своего сервера.

Сразу скажу результаты. Простая страничка с 10м картинок у меня грузилась чуть больше 6ти секунд.  Сейчас, после всех изменений - чуть больше одной секунды. 1-1.25с.

Все кэшируется, все прекрасно. Браузер даже не запрашивает всех картинок. Все супер. Теперь как этого добится.

Вкратце и со ссылками. Писать то, что описано уже много-много раз смысла нет.

nginx - http://sysoev.ru/nginx/
Сначала думал поставить его перед апачем.. но в итоге забил на эту идею, перенес сайт на отдельный IP и там крутится только nginx.

Примерный конфиг:

user www-data;
worker_processes  3;
error_log  /var/log/nginx/error.log;
pid        /var/run/nginx.pid;
events {
    worker_connections  1024;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
    access_log	/var/log/nginx/access.log;
    sendfile        on;
    keepalive_timeout  5;
    tcp_nodelay        on;
    gzip  on;
    log_format main   '$remote_addr - $remote_user [$time_local] '
    	          '"$request" "$request_filename" $status $bytes_sent '
		  '"$http_referer" "$http_user_agent" '
	          '"$gzip_ratio" $upstream_response_time';

    server {
      listen  IP:80;
      server_name  SuperSite.ru;
  	  client_header_buffer_size 100K;
      client_max_body_size 5M;
      access_log  /absolute/path/log/access.static.log main;
      error_log /absolute/path/log/error.static.log error;
#     add_header Server MrBoo;

      location / {
        root /absolute/path/www/;
        index index.php index.html;
        if (!-e $request_filename) {
    	 rewrite  ^(/.*)$  /index.php?q=$1  last;
         break;
        }
      }

#     error_page  404              /index.php;

# redirect server error pages to the static page /50x.html
#
      error_page   500 502 503 504  /50x.html;
      location = /50x.html {
        root   /var/www/nginx-default;
      }

      location ~ \.php$ {
        error_log /absolute/path/log/error.php.log error;
        access_log  /absolute/path/log/access.php.log main;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_hide_header X-Powered-By;
        fastcgi_index  index.php;
        fastcgi_connect_timeout 60;
        fastcgi_read_timeout 60;
        fastcgi_send_timeout 60;
        fastcgi_param  SCRIPT_FILENAME  /absolute/path/www$fastcgi_script_name;
        include        /etc/nginx/fastcgi_params;
      }
  }
}

php-fpmhttp://php-fpm.anight.org/
Самый долгий процесс - это сборка php. Внимательно читайте документацию.

В конфиге, что лежит в /usr/lib/php5/etc/php-fpm.conf раскомментируем:

Unix user of processes
< value name="user">www-data< /value>
Unix group of processes
< value name="group">www-data< /value>

И еще можно создать ссылку: ln -s /usr/lib/php5/sbin/php-fpm /etc/init.d/php-fpm

Теперь php можно запускать командой: /etc/init.d/php-fpm start

В принципе это все, что нужно для работы сайта. И это уже ускорит его и снизит нагрузку на сервер. Но можно пойти еще дальше:

memcached
На сервере у меня Fedora и я все ставил через yum: php-pecl-memcache и memcached

Еще нужно прописать в php.ini:  extension=memcache.so

Запустить memcached: /etc/init.d/memcached star

И не забыть перезапустить php

Ну еще конечно нужно использовать  memcached в своих скриптах, иначе он вам нафиг не сдался :)

А вот  eAccelerator  - пригодится. Про него хорошо рассписано здесь: eAccelerator - ускорение работы php приложений.

А  tmpfs - это вообще просто:

mount -t tmpfs -o rw,size=2M tmpfs /tmp

или прописать в /etc/fstab:

tmpfs /absolute/path tmpfs size=2M 0 1

Вот и все :) Просто.

Связанные записи

Метки: ,

Комментариев: 3

  1. Konstantin пишет:

    У меня стоит vbseo и сервер поддерживает eaccelerator, но в панели управления пишет, что не поддерживает. Что делать?

  2. Andrey Y. Ostanovsky пишет:

    Параметр size=2M не работает под 7.2-RELEASE-p2

  3. seite пишет:

    а для чего сдался tmpfs?

Оставьте свой отзыв!