Апач падает/зависает с частотой 15-20 секунд.

12
G2
На сайте с 16.02.2011
Offline
2
2393

Добрый день всем. Помогите пожалуйста разобраться в проблеме. Апач падает/зависает с частотой 15-20 секунд. То есть делаю рестарт httpd и через сек 15 опять аут.

(VDS, centos-5-x86, Virtual CPU 1000Mhz, 612Mb memory, Apache/2.2.17, nginx 1.0.0, php 5.3.6 .)

Поверх апача стоит nginx. Было подозрение на ддос, но # ps aux | grep httpd | wc -l выдает 12. Поставил апач в дебаг и вот собственно ерроры. Дабы не сорить здесь ошибками вынес их в файлы.


Вот конфиг апача


Timeout 30
KeepAlive Off
MaxKeepAliveRequests 100
KeepAliveTimeout 5

StartServers 8
MinSpareServers 10
MaxSpareServers 40
ServerLimit 1024
MaxClients 1024
MaxRequestsPerChild 4000
</IfModule>

<IfModule worker.c>
StartServers 2
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>


Listen 127.0.0.1:8080


RPAFenable On
RPAFsethostname Off
RPAFproxy_ips 127.0.0.1 46.4.148.100
RPAFheader X-Real-IP

Вот конфиг nginx

user  nginx;

worker_processes 2;
error_log /var/log/nginx/error.log debug;
pid /var/run/nginx.pid;

events {
worker_connections 1024;
}

http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] $status '
'"$request" $body_bytes_sent "$http_referer" '
'"$http_user_agent" "http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
gzip on;
proxy_max_temp_file_size 0;
client_header_timeout 3m;
client_body_timeout 3m;
send_timeout 3m;
proxy_connect_timeout 1m;
proxy_send_timeout 1m;
proxy_read_timeout 1m;


server {
listen 80;
server_name _;
server_name_in_redirect off;
access_log off;

location / {
proxy_pass http://127.0.0.1:8080/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
fastcgi_read_timeout 90;
}
}
}

P.S. началось все вчера вечером. сегодня написал и поставил скрипт который проверяет ответ сервера и делает рестарт апача и на крон каждую минуту. стоит также ulimit -s 2048 .

С уважением. Спасибо.

txt apache_error.txt
txt nginx_error.txt
Andreyka
На сайте с 19.02.2005
Offline
822
#1

Ну так все понятно: server reached MaxClients setting, consider raising the MaxClients setting

Не стоит плодить сущности без необходимости
G2
На сайте с 16.02.2011
Offline
2
#2

MaxClients 1024 , посещаемость небольшая, 4-5к в сутки на сервер. 1024 должно хватать бы с головой, так как сначала было 256 по дефолту, потом я тот эррор который Вы написали увидел и начал увеличивать, что результата не дало.

Den73
На сайте с 26.06.2010
Offline
523
#3
geroy21veka:
MaxClients 1024 , посещаемость небольшая, 4-5к в сутки на сервер. 1024 должно хватать бы с головой, так как сначала было 256 по дефолту, потом я тот эррор который Вы написали увидел и начал увеличивать, что результата не дало.

откуда вы такие цифры берете или у вас ОЗУ бесконечное.

у меня на шараде 120 стоит :) там явно не 4-5к

G2
На сайте с 16.02.2011
Offline
2
#4

ну еще боты, сайтов штук 10 по 50-60к страниц. Просто я поставил 1024 вчера после того как увидел ошибку, а так 256 стояло и было все норм. P.S. Виртуализация: VDSmanager

Himiko
На сайте с 28.08.2008
Offline
560
#5
geroy21veka:
ну еще боты, сайтов штук 10 по 50-60к страниц. Просто я поставил 1024 вчера после того как увидел ошибку, а так 256 стояло и было все норм

Вы себе представляете, какая нужна посещаемость для цифры 256 хотя бы? Да и что за сервер?

Для сравнения:

Сервер, на котором суммарная посещаемость около 120-150 тыс. уникальных посетителей в сутки (просмотров там вообще много), укладывается с запасом в цифру 150. (это даже много).

У вас варианты:

1) Тяжёлые или просто долгие скрипты, которые плодятся до предела и apache перестаёт отвечать.

2) Кривой скрипт, который виснет и вызывается часто. Тогда опять Apache упрётся в лимит.

3) Скорее всего у вас вообще где-то значение MaxClients перебивается каким-то файлом. (пример файла - swtune.conf. Вроде так называется или примерно так).

В первых двух случаях скорее вообще бы не хватило ресурсов и серверу бы стало "плохо". Поэтому наиболее вероятен 3-й вариант.

Профессиональное администрирование серверов (https://systemintegra.ru). Круглосуточно. Отзывы (/ru/forum/834230) Лицензии (http://clck.ru/Qhf5) ISPManager,VDSManager,Billmanager e.t.c. по низким ценам.
G2
На сайте с 16.02.2011
Offline
2
#6

Всем премного благодарен, Himiko а вам вдвойне, как вы и сказали 3 вариант и там MaxClients 10!

<IfModule prefork.c>
StartServers 1
MinSpareServers 1
MaxSpareServers 5
ServerLimit 10
MaxClients 10
MaxRequestsPerChild 4000
</IfModule>
Himiko
На сайте с 28.08.2008
Offline
560
#7

geroy21veka, я всегда говорю, что для решения проблемы необходимо определить причины, по которым она появляется. А не пытаться "угадывать" и тем более поднимать лимиты до гигантских значений. Это приводит только к новым проблемам.

Часто вижу MaxClients 512 и выше на VDS, где при 10 посетителях одновременно всё просто ляжет =)

Убивают значения max_connections 300 (и более) в конфиге mysql.

Причём кто-то даже советует такие значения и пишут об этом в блогах.

Если процессы подвисают или плодятся подключения к mysql - нужно искать причину этого. (ресурсов не хватает или ещё что-то). Увеличение лимитов просто начнёт ронять сервер наглухо и только усложнит поиск проблемы.

M
На сайте с 01.12.2009
Offline
235
#8

Да, надо смотреть =)

Администратор Linux,Freebsd. построения крупных проектов.
Andreyka
На сайте с 19.02.2005
Offline
822
#9
Himiko:
geroy21veka, я всегда говорю, что для решения проблемы необходимо определить причины, по которым она появляется. А не пытаться "угадывать" и тем более поднимать лимиты до гигантских значений. Это приводит только к новым проблемам.

А причина одна - жажда экономить на админе :)

G2
На сайте с 16.02.2011
Offline
2
#10
Andreyka:
А причина одна - жажда экономить на админе :)

))) да нет жадности у меня как таковой нет, параллельно как написать сюда, заплатил админу, чтобы разобрался, просто как говориться хочется и самому немного опыта набраться. 😂

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий