UnFeeLing

Рейтинг
28
Регистрация
25.12.2011

Какие-то крупные базы стоят на сервере? Можно конфигурационный файл mysql в студию?

LEOnidUKG:
С чего это вы взяли? :)

Был опыт работы с этой CMS, много запросов ест эта платформа.

Тонкое место в Вашей ситуации - это именно mysql, перенесите сервер mysql на другую машину с SSD винчестером.

SeoNk:
Прочитал. Скажите, в каком месте этой статьи обсуждается затронутая мной тема. Помоему там совсем о другом

Посмотрите на владельца и группу файла конфигурации. Причем тут Ваш созданный пользователь к файлу, который принадлежит совсем другому владельцу?

Debian 7: apache2+nginx+mysql+xcache все с официальных источников.

Apache2 более менее конфигурируетсья как нужно, копать нужно в сторону более мощного nginx ;)

Хотя сейчас некоторые разработчики начали более гибко оптимизировать ту или иную программную часть самого скрипта.

ТС, такое железо может выдержать много чего ;) Если Вы админ, то думаю не составит такого труда зайти на официальные документации или любые сайты и найти что и как делать определенная настройка того или иного софта.

http://nginx.org/ru/docs/http/ngx_http_limit_req_module.html#limit_req_zone

nano /etc/nginx/nginx.conf

# Увеличиваем максимальное количество используемых файлов

worker_rlimit_nofile 8192;
## Число рабочих процессов, рекомендуется ставить по количеству ядер
worker_processes 1;
# Уменьшает число системных вызовов gettimeofday(), что приводит к увеличению производительности
timer_resolution 100ms;
# Директива задаёт приоритет рабочих процессов от -20 до 20 (отрицательное число означает более высокий приоритет).
worker_priority -5;
events {
# Увеличиваем максимальное количество соединений
worker_connections 2048;
# Использовать эффективный метод epoll для обработки соединений
use epoll;
}
http {
# Включить sendfile(). Использование sendfile() экономит системные вызовы, уменьшает число копирований данных
sendfile on;
output_buffers 2 64k;

gzip on;
gzip_min_length 1100;
gzip_buffers 64 8k;
gzip_comp_level 3;
gzip_http_version 1.1;
gzip_proxied any;
gzip_types text/plain application/xml application/x-javascript text/css;
# Отключаем таймаут на закрытие keep-alive соединений
keepalive_timeout 0;
# Не отдавать версию nginx в заголовке ответа
server_tokens off;
# Сбрасывать соединение по таймауту
reset_timedout_connection on;
#Директива описывает зону, в которой хранятся состояния сессий. Значения сессий определяется заданной переменной.
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;

}

server {
listen 80 default;
server_name localhost;

access_log /var/log/nginx/localhost.access.log;

location / {
root /var/www/;
index index.html index.htm index.php;
open_file_cache max=1024 inactive=600s;
open_file_cache_valid 2000s;
open_file_cache_min_uses 1;
open_file_cache_errors on;
}
location ~ \.php$ {
limit_req zone=one burst=5;
fastcgi_pass unix://tmp/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name;
include fastcgi_params;
fastcgi_hide_header "Cache-Control";
}
location ~ /\.ht {
deny all;
}
expires max; # Внимание!!! Эта строка expires необходима!
add_header Last-Modified $sent_http_Expires;
}


---------- Добавлено 08.06.2015 в 17:11 ----------

nano /etc/apache2/apache2.conf

Проставить

StartServers 5 

MinSpareServers 5
MaxSpareServers 5
MaxClients 30
MaxRequestsPerChild 1000

MaxClients

Директива MaxClients устанавливает максимальное количество параллельных запросов, которые будет поддерживать сервер. Apache не будет порождать больше процессов/потоков чем MaxClients. Значение MaxClient не долно быть слишком маленьким (иначе много клиентов останутся необслуженными), но и не стоит устанавливать слишком большое количество - лучше не обслужить часть клиентов чем исчерпать все ресурсы, залезть в своп и умереть под нагрузкой. Хорошим может быть значение MaxClients = количество памяти выделенное под веб-сервер / максимальный размер порожденного процесса или потока. Для статических файлов apache использует около 2-3 Мб на процесс, для динамики (php, cgi) - зависит от скрипта, но обычно около 16-32 Мб.

Вы можете прикинуть примерный размер посмотрев на колонку rss в выводе `ps -ylC httpd --sort:rss`

Если сервер уже обслуживает MaxClients запросов, новые запросы попадут в очередь, размер которой устанавливается с помощью директивы ListenBacklog.

MinSpareServers, MaxSpareServers, и StartServers

Т.к. создание потока, и особенно процесса - дорогая операция, apache создает их заранее. Директивы MaxSpareServers и MinSpareServers устанавливают как много процессов/потоков должны ожидать в готовности принять запрос (максимум и минимум). Если значение MinSpareServers слишком маленькое и неожиданно приходит много запросов, apache вынужден будет создавать много новых процессов/потоков, что создаст дополнительную нагрузку в этой стрессовой ситуации. С другой стороны, если MaxSpareServers слишком велико, apache будет сильно нагружать систему этими процессами, даже если количество клиентов минимально.

Постарайтесь установить такие MinSpareServers и MaxSpareServers, чтобы apache не создавал более 4 процессов/потоков в секунду. Если он создаст более 4, в ErrorLog будет помещено сообщение об этом. Это - сигнал того что MinSpareServers слишком мало.

MaxRequestsPerChild

Директива MaxRequestsPerChild устанавливает сколько запросов может обработать один дочерний процесс/поток прежде чем он будет завершен. По умолчанию значение этой директивы установлено в 0, что означает что однажды созданный процесс/поток не будет завершен никогда (ну кроме случаев остановки сервера или краха этого процесса/потока). Рекомендую установить MaxRequestsPerChild равное какому-нибудь достаточно большому числу (несколько тысяч). Это не создаст излишней нагрузки, связаной с тем что apache будет вынужден создавать новые дочерние процессы, в то же время это поможет избавиться от проблем с утечкой памяти в дочерних процессах (что очень возможно например если вы используете нестабильную версию php).

KeepAlive и KeepAliveTimeout

KeepAlive позволяет делать несколько запросов в одном TCP-подключении. Это особенно полезно для html-страниц с большим количеством изображений. Если KeepAlive установлен в Off, то для самой страницы и для каждого изображения будет создано отдельное подключение (которое нужно будет обработать master-процессу), что плохо и для сервера и для клиента. Так что для подобных случаев рекомендуется устанавливать KeepAlive в On. Для других применений (например для download-сервера) KeepAlive может быть бесполезен и даже вреден, т.к. при включенном KeepAlive сервер закрывает соединение не сразу, а ждет KeepAliveTimeout секунд нового запроса. Для того чтобы процессы не висели слишком долго в бесполезном ожидании, устанавливайте KeepAliveTimeout достаточно малым, около 5-10 секунд обычно достаточно.

Вообще обсуждалось по-моему где-то уже ;)

Переходите на KVM.

Какой трафик? Сколько сайтов на VPS? Могу посмотреть сервер.

1 234
Всего: 38