Падает сервер при 42 активных соединениях)) Помогите настроить

Havan

Создатель
Регистрация
9 Июн 2012
Сообщения
27
Реакции
3
Добрый день. Стоит Nginx+php+mysql, Windows Server 12. Код ошибки (из лога nginx)
Код:
2014/01/05 14:59:42 [error] 5108#5148: *1882 upstream timed out (10060: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond) while connecting to upstream, client: 46.18.4.19, server: site.com, request: "GET /redirect/traff.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host:

Падает при 40-50 активных соединения. Хотя железо вообще не нагружено. 2% проца, 2гига оперы (из 16).

Конфиг Nginx

Код:
#user  nobody;
worker_processes  8;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


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

    server_tokens off;
   
    client_body_buffer_size 1K;
   
    client_header_buffer_size 1k;
   
    client_max_body_size 10k;
   
    large_client_header_buffers 2 1k;
   
    client_body_timeout 10;
     
    client_header_timeout 10;
     
    keepalive_timeout 5 5;
     
    send_timeout 10;
       
    sendfile        on;


    server {
        listen 80;
       
        if ($request_method !~ ^(GET|HEAD|POST)$ ) {
            return 444;
        }
       
        root c:/server/www/site1.com;   
       
        server_name *.site1.com;

        server_tokens off;

        #access_log logs/access.log;
       

        location / {
            index index.html index.htm index.php;
        }

        location ~ \.php$ {
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
        }

        location ~ /\.ht {
            deny all;
        }

        #error_page 404 /404.html;

        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
            root html;
        }
    }
   
   
    server {
        listen 80;
       
        root c:/server/www/site2.com;   
       
        server_name *.site2.com;

        server_tokens off;

        #access_log logs/access.log;

        location / {
            index index.html index.htm index.php;
        }

        location ~ \.php$ {
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
        }

        location ~ /\.ht {
            deny all;
        }

        #error_page 404 /404.html;

        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
            root html;
        }
    }
   

    server {
        listen 80;
       
        root c:/server/www/site3.com;   
       
        server_name *.site3.com;

        server_tokens off;

        #access_log logs/access.log;

        location / {
            index index.html index.htm index.php;
        }

        location ~ \.php$ {
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
        }

        location ~ /\.ht {
            deny all;
        }

        #error_page 404 /404.html;

        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
            root html;
        }
    }
   
   
   
    server {
        listen 80;
       
        root c:/server/www/site4.com;   
       
        server_name *.site4.com;

        server_tokens off;

        #access_log logs/access.log;

        location / {
            index index.html index.htm index.php;
        }

        location ~ \.php$ {
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
        }

        location ~ /\.ht {
            deny all;
        }

        #error_page 404 /404.html;

        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
            root html;
        }
    }
   
   
    server {
        listen 80;
       
        if ($request_method !~ ^(GET|HEAD|POST)$ ) {
            return 444;
        }
       
        root c:/server/www/site5.com;   
       
        server_name site5.com;

        server_tokens off;

        #access_log logs/access.log;
       

        location / {
            index index.html index.htm index.php;
        }

        location ~ \.php$ {
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
        }

        location ~ /\.ht {
            deny all;
        }

        #error_page 404 /404.html;

        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
            root html;
        }
    }
   


}
 
Последнее редактирование модератором:
Увеличиваем эти параметры:

client_body_timeout 10;
client_header_timeout 10;

В конфиге php-fpm увеличить кол-во процессов, подбирать все опытным путем.
 
вроде как нашел причину.
Если запустить скрипт ниже 1 раз, то зависает весь сервер
Код:
<?php
    sleep(99999999)
?>
В конфиге php-fpm увеличить кол-во процессов
У меня просто php (сервер windows), но думаю это то что нужно. В гугле не смог найти как увеличить, подскажите ?
вот php.ini
Код:
[PHP] 
short_open_tag = Off

asp_tags = Off
precision = 14
y2k_compliance = On
output_buffering = 4096
zlib.output_compression = Off
implicit_flush = Off
unserialize_callback_func =
serialize_precision = 17
allow_call_time_pass_reference = Off
safe_mode = Off
safe_mode_gid = Off
safe_mode_include_dir =
safe_mode_exec_dir =
safe_mode_allowed_env_vars = PHP_
safe_mode_protected_env_vars = LD_LIBRARY_PATH
disable_functions =

disable_classes =

zend.enable_gc = On

expose_php = On

max_execution_time = 30
max_input_time = 60

memory_limit = 128M
error_reporting = E_ALL & ~E_DEPRECATED

display_errors = Off

display_startup_errors = Off
log_errors = On

log_errors_max_len = 1024

ignore_repeated_errors = Off
ignore_repeated_source = Off
report_memleaks = On
track_errors = Off
html_errors = Off
variables_order = "GPCS"

request_order = "GP"

register_globals = Off
register_long_arrays = Off

register_argc_argv = Off
auto_globals_jit = On
post_max_size = 8M
magic_quotes_gpc = Off
magic_quotes_runtime = Off
magic_quotes_sybase = Off
auto_prepend_file =
auto_append_file =
default_mimetype = "text/html"
doc_root =

user_dir =
enable_dl = Off

file_uploads = On

upload_max_filesize = 2M

max_file_uploads = 20
allow_url_fopen = On
allow_url_include = Off

default_socket_timeout = 60
[Date]

date.timezone ="Europe/Moscow"
[filter]

[iconv]

[intl]

[sqlite]
[sqlite3]

[Pcre]
[Pdo]

[Pdo_mysql]

pdo_mysql.cache_size = 2000

pdo_mysql.default_socket=
[Phar]

[Syslog]

define_syslog_variables  = Off
[mail function]

SMTP = localhost
smtp_port = 25
mail.add_x_header = On
[SQL]
sql.safe_mode = Off
[ODBC]
odbc.allow_persistent = On
odbc.check_persistent = On
odbc.max_persistent = -1
odbc.max_links = -1

odbc.defaultlrl = 4096
odbc.defaultbinmode = 1
[Interbase]
ibase.allow_persistent = 1

ibase.max_persistent = -1

ibase.max_links = -1

ibase.timestampformat = "%Y-%m-%d %H:%M:%S"

ibase.dateformat = "%Y-%m-%d"

ibase.timeformat = "%H:%M:%S"
[MySQL]

mysql.allow_local_infile = On
mysql.allow_persistent = On
mysql.cache_size = 2000
mysql.max_persistent = -1
mysql.max_links = -1

mysql.default_port =

mysql.default_socket =
mysql.default_host =
mysql.default_user =
mysql.default_password =
mysql.connect_timeout = 60

mysql.trace_mode = Off
[MySQLi]
mysqli.max_persistent = -1
mysqli.allow_persistent = On
mysqli.max_links = -1
mysqli.cache_size = 2000

mysqli.default_port = 3306

mysqli.default_socket =
mysqli.default_host =
mysqli.default_user =
mysqli.default_pw =

mysqli.reconnect = Off
[mysqlnd]
mysqlnd.collect_statistics = On

mysqlnd.collect_memory_statistics = Off

[OCI8]

[PostgreSQL]

pgsql.allow_persistent = On

pgsql.auto_reset_persistent = Off
pgsql.max_persistent = -1
pgsql.max_links = -1

pgsql.ignore_notice = 0

pgsql.log_notice = 0
[Sybase-CT]

sybct.allow_persistent = On
sybct.max_persistent = -1
sybct.max_links = -1
sybct.min_server_severity = 10
sybct.min_client_severity = 10
[bcmath]

bcmath.scale = 0
[browscap]
[Session]

session.save_handler = files

session.use_cookies = 1
session.use_only_cookies = 1
session.name = PHPSESSID
session.auto_start = 0
session.cookie_lifetime = 0
session.cookie_path = /
session.cookie_domain =
session.cookie_httponly =
session.serialize_handler = php
session.gc_probability = 1
session.gc_divisor = 1000

session.gc_maxlifetime = 1440
session.bug_compat_42 = Off

session.bug_compat_warn = Off
session.referer_check =
session.entropy_length = 0
session.cache_limiter = nocache
session.cache_expire = 180
session.use_trans_sid = 0
session.hash_function = 0
session.hash_bits_per_character = 5

url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"
[MSSQL]
mssql.allow_persistent = On

mssql.max_persistent = -1

mssql.max_links = -1

mssql.min_error_severity = 10

mssql.min_message_severity = 10

mssql.compatability_mode = Off

mssql.secure_connection = Off
[Assertion]
[COM]

[mbstring]

[gd]

[exif]
[Tidy]

tidy.clean_output = Off
[soap]

soap.wsdl_cache_enabled=1
soap.wsdl_cache_dir="/tmp"

soap.wsdl_cache_ttl=86400

soap.wsdl_cache_limit = 5
[sysvshm]
[ldap]
ldap.max_links = -1
[mcrypt]

[dba]

[xsl]
 
Последнее редактирование модератором:
Попробуй повысить worker_connections 1024; до 2048. Но скорее всего php не может обработать быстро какой-то скрипт.
 
попробуйте увеличить значение (windows)
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\EnableConnectionRateLimiting
Плюс посмотрите - возможно у вас узкое место в количестве подключений к базе данных.
У меня был инциндент когда сервер залипал в этом месте.
 
Назад
Сверху