Чертовщина какая-то, ничего не понимаю....На старом сервере стоял nginx+apache, все работало прекрасно. Переехал на новый сервер, настроил такую же схему и был очень сильно удивлен что сайт грузиться неимоверно долго, при этом в логах nginx'a за минуту накапало куча вот таких строчек:
2011/08/26 15:50:43 [error] 11505#0: *4327 upstream timed out (110: Connection timed out) while connecting to upstream, client: *.*.*.*, server: , request: "GET /index.php HTTP/1.1", upstream: "http://*.*.*.*:8080/index.php", host: "www.********"
мало того заметил что из 4ГБ ОЗУ использовалось 3.8ГБ.
Перелопатив гугль и яндекс и подумав, сделал вывод что тупит бэкенд и скрипт не успевает вовремя выполниться (хотя таймаут в конфе nginxa стоит 90 секунд).
Однако, отключив nginx, повесив apache напрямую к юзерам, обнаружил что никакой задержки выполнения скрипта нету, все грузиться прекрасно, оперативку съедает максимум 1.5ГБ.
Всю голову уже себе сломал, в чем может быть дело?
>[оверквотинг удален]
> while connecting to upstream, client: *.*.*.*, server: , request: "GET /index.php
> HTTP/1.1", upstream: "http://*.*.*.*:8080/index.php", host: "www.********"
> мало того заметил что из 4ГБ ОЗУ использовалось 3.8ГБ.
> Перелопатив гугль и яндекс и подумав, сделал вывод что тупит бэкенд
> и скрипт не успевает вовремя выполниться (хотя таймаут в конфе nginxa
> стоит 90 секунд).
> Однако, отключив nginx, повесив apache напрямую к юзерам, обнаружил что никакой
> задержки выполнения скрипта нету, все грузиться прекрасно, оперативку съедает максимум
> 1.5ГБ.
> Всю голову уже себе сломал, в чем может быть дело?Ну давайте полные настройки nginx, а так же настройки apache, где видно, какие порты он прослушивает, vhost сайта и прочую необходимую информацию. И кто жрал эти 3.8 гига? Сколько оттуда жрал nginx?
Так же советую настроить server-status на apache и посмотреть что там тварится, когда всё зависает.
>[оверквотинг удален]
>> стоит 90 секунд).
>> Однако, отключив nginx, повесив apache напрямую к юзерам, обнаружил что никакой
>> задержки выполнения скрипта нету, все грузиться прекрасно, оперативку съедает максимум
>> 1.5ГБ.
>> Всю голову уже себе сломал, в чем может быть дело?
> Ну давайте полные настройки nginx, а так же настройки apache, где видно,
> какие порты он прослушивает, vhost сайта и прочую необходимую информацию. И
> кто жрал эти 3.8 гига? Сколько оттуда жрал nginx?
> Так же советую настроить server-status на apache и посмотреть что там тварится,
> когда всё зависает.nginx.conf
user www-data;
worker_processes 4;
pid /var/run/nginx.pid;events {
worker_connections 768;
# multi_accept on;
}http {
##
# Basic Settings
##sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
server_tokens off;# server_names_hash_bucket_size 64;
# server_name_in_redirect off;include /etc/nginx/mime.types;
default_type application/octet-stream;##
# Logging Settings
##access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;##
# Gzip Settings
##gzip on;
gzip_disable "msie6";# gzip_vary on;
# gzip_proxied any;
# gzip_comp_level 6;
# gzip_buffers 16 8k;
# gzip_http_version 1.1;
# gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;##
# Virtual Host Configs
##include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;server{
listen *:80;
location /{
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 20m;
client_body_buffer_size 256k;proxy_connect_timeout 120;
proxy_send_timeout 120;
proxy_read_timeout 120;proxy_buffer_size 8k;
proxy_buffers 8 64k;
proxy_busy_buffers_size 128k;
proxy_temp_file_write_size 128k;}
}}
#mail {
# # See sample authentication script at:
# # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
#
# # auth_http localhost/auth.php;
# # pop3_capabilities "TOP" "USER";
# # imap_capabilities "IMAP4rev1" "UIDPLUS";
#
# server {
# listen localhost:110;
# protocol pop3;
# proxy on;
# }
#
# server {
# listen localhost:143;
# protocol imap;
# proxy on;
# }
#}
apache2/ports.conf# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default
# This is also true if you have upgraded from before 2.2.9-3 (i.e. from
# Debian etch). See /usr/share/doc/apache2.2-common/NEWS.Debian.gz and
# README.Debian.gzNameVirtualHost *:8080
Listen 8080<IfModule mod_ssl.c>
# If you add NameVirtualHost *:443 here, you will also have to change
# the VirtualHost statement in /etc/apache2/sites-available/default-ssl
# to <VirtualHost *:443>
# Server Name Indication for SSL named virtual hosts is currently not
# supported by MSIE on Windows XP.
Listen 443
</IfModule><IfModule mod_gnutls.c>
Listen 443
</IfModule>конфиг вирт. хоста:
<VirtualHost *:80>
ServerAdmin webmaster@localhostDocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warnCustomLog ${APACHE_LOG_DIR}/access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>AllowEncodedSlashes on
</VirtualHost>
А кто жрал ОЗУ неизвестно?
Может быть, что новый сайт ждёт HTTP 1.1, в то время как Nginx разговаривает с бэкендом только через HTTP 1.0.