LINUX.ORG.RU
решено ФорумAdmin

Подвисание процесса Apache

 503, ,


0

2

Привет всем. Сервер не справляется с потоком запросов и через время выдает 503, потом через минут 5 снова может обрабатывать запросы. При чем эту ошибку выдает одному клиенту, а остальные в этот момент могут заходить на сайт.

Провел немного экспериментов с server-status. С другого сервера делаю подряд несколько десятков запросов с помощью wget, через некоторое время получаю 503. Смотрю в server-status там есть запрос, через время запрос пропадает. Пробую еще раз сделать запрос страницы - снова получаю 503, server-status показывает, что запрос обрабатывается. Через некоторое время на этих слотах обрабатываются без проблем другие запросы, но при попытке обратиться с того сервера снова 503. Похоже, словно что-то банит хост. если много запросов. Как понять в чем затык, где что еще можно посмотреть?

Сервер debian с nginx и apache

В логах access.log nginx обнаружил:

"GET /..../ HTTP/1.0" 503 188 "-" "Wget/1.11.4"

server-status показывает в слоте 2-0, как раз процесс, который возвращает 503

Apache Server Status for -----.ru
Server Version: Apache/2.2.16 (Debian) PHP/5.3.3-7+squeeze5 with Suhosin-Patch mod_ssl/2.2.16 OpenSSL/0.9.8o
Server Built: Sep 25 2011 22:18:56 
Current Time: Monday, 02-Jul-2012 12:36:02 MSK
Restart Time: Monday, 02-Jul-2012 12:32:02 MSK
Parent Server Generation: 0
Server uptime: 3 minutes 59 seconds
Total accesses: 73 - Total Traffic: 150 kB
CPU Usage: u5.61 s1.09 cu0 cs0 - 2.8% CPU load
.305 requests/sec - 642 B/second - 2104 B/request
1 requests currently being processed, 2 idle workers
_W_.............................................................
................................................................
................................................................
................................................................

Scoreboard Key:
 "_" Waiting for Connection, "S" Starting up, "R" Reading Request,
 "W" Sending Reply, "K" Keepalive (read), "D" DNS Lookup,
 "C" Closing connection, "L" Logging, "G" Gracefully finishing,
 "I" Idle cleanup of worker, "." Open slot with no current process
Srv	PID	Acc	M	CPU 	SS	Req	Conn	Child	Slot	Client	VHost	Request
0-0	22123	0/25/25	_ 	2.00	6	0	0.0	0.06	0.06 	-.-.-.-	-----.ru	GET /favicon.ico HTTP/1.1
1-0	22124	0/25/25	W 	2.28	0	0	0.0	0.07	0.07 	-.-.-.-	-----.ru	GET /server-status HTTP/1.1
2-0	22125	0/23/23	_ 	2.42	3	74	0.0	0.02	0.02 	-.-.-.-	-----.ru	GET /.../ HTTP/1.0

Конфиги nginx:

user www-data;
worker_processes  1;
timer_resolution 100ms;

error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
    use epoll;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format main '$remote_addr - $remote_user [$time_local] $host $request "$status" $body_bytes_sent "$http_referer" '
                    '"$http_user_agent" "$http_x_forwarded_for" "$server_port"';

    access_log  /var/log/nginx/access.log;
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=cache:30m inactive=60m max_size=500m;
    #sendfile       on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  20;
    tcp_nodelay        on;
    reset_timedout_connection  on;

    gzip  on;
    gzip_min_length 1300;
    gzip_buffers    8 32k;
    gzip_types  text/plain text/css
                text/javascript application/x-javascript
                text/xml application/xml application/xml+rss;  
    gzip_http_version 1.1;
    gzip_proxied any;
    gzip_comp_level    3;
    gzip_disable        "msie6";

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
	client_max_body_size 16m;
	log_format  isp '$bytes_sent $request_length';

	server {
		listen -.-.-.-:80;
		server_name -----.ru forum------.ru www.forum------.ru www.-----.ru;
		rewrite ^(/manager/.*)$	https://$host$1	permanent;
		error_page 404 = @fallback;
		location ~* ^/(webstat/|awstats|webmail/|myadmin/|manimg/) {
			proxy_pass http://-.-.-.-:8080;
			proxy_redirect http://-----.ru:8080/ /;
			proxy_set_header Host $host;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_set_header X-Real-IP $remote_addr;
		}
		location / {
                        gzip_static on;
        proxy_cache_valid 200 301 302 304 60m;
        proxy_cache_key "$request_method|$http_if_modified_since|$http_if_none_match|$host|$request_uri";
        proxy_hide_header "Set-Cookie";
        proxy_ignore_headers "Cache-Control" "Expires";
        proxy_cache_use_stale error timeout invalid_header http_500 http_502 http_503 http_504;
        proxy_cache     cache;
			proxy_pass http://-.-.-.-:8080;
			proxy_redirect http://-----.ru:8080/ /;
			proxy_set_header Host $host;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_set_header X-Real-IP $remote_addr;
		}
		location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar)$ {
			root /var/www/-----/data/www/-----.ru;
			valid_referers server_names none blocked ~\.google\. images.yandex.ru;
                	if ($invalid_referer) {
                		return 403;
               		 }			
			access_log /var/www/httpd-logs/-----.ru.access-n.log ;
			access_log /var/www/nginx-logs/----- isp;
		}
		location @fallback {
			proxy_pass http://-.-.-.-:8080;
			proxy_set_header Host $host;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_set_header X-Real-IP $remote_addr;
		}
	}

}


apache:

LockFile ${APACHE_LOCK_DIR}/accept.lock
PidFile ${APACHE_PID_FILE}
Timeout 10
KeepAlive Off
MaxKeepAliveRequests 100
KeepAliveTimeout 15

<IfModule mpm_prefork_module>
    StartServers          2
    MinSpareServers       2
    MaxSpareServers       7
    MaxClients            64
    MaxRequestsPerChild   128
</IfModule>

<IfModule mpm_worker_module>
...
</IfModule>

<IfModule mpm_event_module>
...
</IfModule>

User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}
AccessFileName .htaccess
<Files ~ "^\.ht">
    Order allow,deny
    Deny from all
    Satisfy all
</Files>
DefaultType text/plain
HostnameLookups Off
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn

# Include module configuration:
<VirtualHost -.-.-.-:8080>
	ServerName ----.ru
	DocumentRoot /var/www/----/data/www/----.ru
	SuexecUserGroup ---- ---- 
	CustomLog /var/www/httpd-logs/----.ru.access.log combined
	ErrorLog /var/www/httpd-logs/----.ru.error.log
	ServerAlias forum-----.ru www.forum-----.ru www.----.ru
	ServerAdmin it@seocomplex.ru
	php_admin_value open_basedir "/var/www/----/data:."
	php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f it@seocomplex.ru"
	php_admin_value upload_tmp_dir "/var/www/----/data/mod-tmp"
	php_admin_value session.save_path "/var/www/----/data/mod-tmp"
	AddType application/x-httpd-php .php .php3 .php4 .php5 .phtml
	AddType application/x-httpd-php-source .phps
</VirtualHost>

Include mods-enabled/*.load
Include mods-enabled/*.conf
Include httpd.conf
Include ports.conf

LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent

Include conf.d/
Include sites-enabled/

NameVirtualHost *:443
<VirtualHost _default_:443>
	ServerName www.example.com:443
	SSLEngine on
	SSLCertificateFile /etc/apache2/ssl.crt/server.crt
	SSLCertificateKeyFile /etc/apache2/ssl.key/server.key
</VirtualHost>

Include /usr/local/ispmgr/etc/ispmgr.inc
<Directory /var/www/----/data/www/----.ru>
	php_admin_value open_basedir "/var/www/-----/data:."
</Directory>
NameVirtualHost -.-.-.-:8080

Ответ на: комментарий от Skolotovich

Я как раз подозреваю, что это бекэнд возвращает 503 ибо по server-status видно, что запросы доходят до apache

delimer
() автор топика
Ответ на: комментарий от delimer

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

еще вариант, могло упереться в системные лимиты, типа количество дискрипторов

Skolotovich ★★★
()
Ответ на: комментарий от Skolotovich

имхо в подобных приложениях самым узким место бывает база

как это диагностировать? сейчас 503 отдает только одному клиенту, другой без проблем получает страницу, то есть в теории не упирается в количество подключений...

а у вас cgi скрипты используются?

cgi не используется.

delimer
() автор топика
Ответ на: комментарий от delimer

как это диагностировать?

походу только отладкой, так шо хватай большой дрын и идти к разработчикам, хай ищут багу (:

Skolotovich ★★★
()
Ответ на: комментарий от delimer

Нашел причину. Оказалось, что это один из модулей сайта ограничивал количество хитов за период.

delimer
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.