Random Instant 502 Bad Gateway Errors
Michael Shadle
mike503 at gmail.com
Sat May 29 22:51:05 MSD 2010
Yup. General rule of thumb is roughly how many concurrent php requests
you expect at peak time. Hopefully your code runs fast enough to spend
less than 1 second processing. Cause if the children are busy it will
block until one opens up or until nginx's configured timeout hits.
On May 29, 2010, at 11:24 AM, Jérôme Loyet <jerome at loyet.net> wrote:
> 2010/5/29 Joe <frumentius at gmail.com>:
>> Usually using 5 is quiet enough.
>
> either you have a well optimized website with a 99% cache ratio or you
> don't have traffic. In the real world, there is so much web apps which
> consume a lot of resources and for thoses you'll need much more than 5
> children to handle them.
>>
>>
>> Regards,
>> Joe
>>
>>
>> 2010/5/30 Michael Shadle <mike503 at gmail.com>
>>>
>>> 150 children is quite a lot. Sure you need that? :)
>>>
>>> On May 29, 2010, at 6:02 AM, "TheCrach" <nginx-forum at nginx.us>
>>> wrote:
>>>
>>>> Hi,
>>>>
>>>> I'm French and I've some problem with nginx 0.8.38 and PHP-FPM
>>>> 5.3.0 with
>>>> Suhosin patch :/
>>>> I've got random instant 502 Bad Gateway errors, generaly a
>>>> refresh make
>>>> the page works again but it's really anoying.
>>>>
>>>> Nginx Config :
>>>> [code]
>>>> user www;
>>>> worker_processes 1;
>>>> daemon on;
>>>>
>>>> error_log /var/log/nginx/error.log;
>>>> pid /var/run/nginx.pid;
>>>>
>>>> worker_rlimit_nofile 32000;
>>>>
>>>> events {
>>>> worker_connections 4096;
>>>> use epoll;
>>>> }
>>>>
>>>> http {
>>>>
>>>> include mime.types;
>>>> default_type text/plain;
>>>>
>>>> limit_zone http $binary_remote_addr 1m;
>>>> limit_zone https $binary_remote_addr 1m;
>>>>
>>>> client_body_timeout 8;
>>>> client_header_timeout 5;
>>>> keepalive_timeout 5;
>>>> keepalive_requests 10;
>>>> send_timeout 8;
>>>>
>>>> client_max_body_size 512k;
>>>>
>>>> access_log off;
>>>> error_log off;
>>>>
>>>> client_header_buffer_size 16k;
>>>> large_client_header_buffers 16 16k;
>>>>
>>>> output_buffers 2 32k;
>>>> postpone_output 1460;
>>>>
>>>> sendfile on;
>>>> tcp_nopush on;
>>>> tcp_nodelay on;
>>>> reset_timedout_connection on;
>>>>
>>>> ignore_invalid_headers on;
>>>> autoindex on;
>>>> msie_padding on;
>>>>
>>>> gzip on;
>>>> gzip_http_version 1.1;
>>>> gzip_vary on;
>>>> gzip_comp_level 6;
>>>> gzip_proxied any;
>>>> gzip_types text/plain text/css application/json
>>>> application/x-javascript text/xml application/xml application/xml
>>>> +rss
>>>> text/javascript;
>>>> gzip_buffers 16 16k;
>>>> gzip_disable “MSIE [1-6].(?!.*SV1)”;
>>>>
>>>> server
>>>> {
>>>> listen 80 default rcvbuf=8192 sndbuf=16384 backlog=65536;
>>>> index index.html index.htm index.php;
>>>> root /home/www/;
>>>>
>>>> limit_conn http 10;
>>>>
>>>> access_log off;
>>>>
>>>> location ~* \.(ico|css|js|gif|jpe?g|png)(\?[0-9]+)?$ {
>>>> expires 3600;
>>>> break;
>>>> }
>>>>
>>>> location ~ \.php(/|$) {
>>>> include fastcgi_params;
>>>> }
>>>>
>>>> location ~ \.php5(/|$) {
>>>> include fastcgi_params;
>>>> }
>>>>
>>>> location ~ \.php4(/|$) {
>>>> include fastcgi_params;
>>>> }
>>>>
>>>> location /cache/status {
>>>> stub_status on;
>>>> access_log off;
>>>> }
>>>> }
>>>> [/code]
>>>>
>>>> Fastcgi params :
>>>>
>>>> [code]
>>>> fastcgi_connect_timeout 5;
>>>> fastcgi_send_timeout 8;
>>>> fastcgi_buffer_size 512k;
>>>> fastcgi_buffers 64 64k;
>>>> fastcgi_busy_buffers_size 512k;
>>>> fastcgi_temp_file_write_size 512k;
>>>> fastcgi_ignore_client_abort on;
>>>> fastcgi_intercept_errors on;
>>>> fastcgi_read_timeout 45;
>>>>
>>>> fastcgi_pass unix:/tmp/php.socket;
>>>> fastcgi_index index.php;
>>>> fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
>>>> fastcgi_param QUERY_STRING $query_string;
>>>> fastcgi_param REQUEST_METHOD $request_method;
>>>> fastcgi_param CONTENT_TYPE $content_type;
>>>> fastcgi_param CONTENT_LENGTH $content_length;
>>>> fastcgi_param SCRIPT_NAME $fastcgi_script_name;
>>>> fastcgi_param REQUEST_URI $request_uri;
>>>> fastcgi_param DOCUMENT_URI $document_uri;
>>>> fastcgi_param DOCUMENT_ROOT $document_root;
>>>> fastcgi_param SERVER_PROTOCOL $server_protocol;
>>>> fastcgi_param GATEWAY_INTERFACE CGI;
>>>> fastcgi_param SERVER_SOFTWARE RD;
>>>> fastcgi_param REMOTE_ADDR $remote_addr;
>>>> fastcgi_param REMOTE_PORT $remote_port;
>>>> fastcgi_param SERVER_ADDR $server_addr;
>>>> fastcgi_param SERVER_PORT $server_port;
>>>> fastcgi_param SERVER_NAME $server_name;
>>>> fastcgi_param REDIRECT_STATUS 200;
>>>> [/code]
>>>>
>>>> PHP-FPM conf :
>>>>
>>>> [code]
>>>> <?xml version="1.0" ?>
>>>> <configuration>
>>>> <section name="global_options">
>>>> <value name="pid_file">/var/run/php5-fpm.pid</value>
>>>> <value name="error_log">/var/log/php-fpm.log</value>
>>>> <value name="log_level">warn</value>
>>>> <value name="emergency_restart_threshold">60</value>
>>>> <value name="emergency_restart_interval">1m</value>
>>>> <value name="process_control_timeout">4s</value>
>>>> <value name="daemonize">yes</value>
>>>> </section>
>>>>
>>>> <workers>
>>>> <section name="pool">
>>>> <value name="name">RD</value>
>>>> <value name="listen_address">/tmp/php.socket</value>
>>>> <value name="listen_options">
>>>> <value name="backlog">-1</value>
>>>> <value name="owner">www</value>
>>>> <value name="group">www</value>
>>>> <value name="mode">0666</value>
>>>> </value>
>>>>
>>>> <value name="php_defines">
>>>> </value>
>>>>
>>>> <value name="user">www</value>
>>>> <value name="group">www</value>
>>>>
>>>> <value name="pm">
>>>> <value name="style">static</value>
>>>> <value name="max_children">150</value>
>>>> <value name="apache_like">
>>>> <value name="StartServers">25</value>
>>>> <value name="MinSpareServers">5</value>
>>>> <value name="MaxSpareServers">35</value>
>>>> </value>
>>>> </value>
>>>>
>>>> <value name="request_terminate_timeout">0s</value>
>>>> <value name="request_slowlog_timeout">0s</value>
>>>> <value name="slowlog">/var/log/php-fpm.log.slow</value>
>>>> <value name="rlimit_files">1024</value>
>>>> <value name="rlimit_core">0</value>
>>>> <value name="chroot"></value>
>>>> <value name="chdir"></value>
>>>> <value name="catch_workers_output">yes</value>
>>>> <value name="max_requests">65536</value>
>>>> <value name="allowed_clients">127.0.0.1</value>
>>>>
>>>> <value name="environment">
>>>> <value name="HOSTNAME">$HOSTNAME</value>
>>>> <value name="PATH">/usr/local/bin:/usr/bin:/bin</
>>>> value>
>>>> <value name="TMP">/tmp</value>
>>>> <value name="TMPDIR">/tmp</value>
>>>> <value name="TEMP">/tmp</value>
>>>> <value name="OSTYPE">$OSTYPE</value>
>>>> <value name="MACHTYPE">$MACHTYPE</value>
>>>> <value name="MALLOC_CHECK_">2</value>
>>>> </value>
>>>> </section>
>>>> </workers>
>>>> </configuration>
>>>> [/code]
>>>>
>>>> Server config :
>>>>
>>>> [code]
>>>> Intel Corei5 (Lynnfield) 4x 2.66+ GHz 8 Mo L2 - FSB 1333 MHz
>>>> 64 bits
>>>> 8 Go DDR3
>>>> Intel SSD X25-M 2x 80 Go RAID 0/1
>>>> GigaEthernet
>>>> [/code]
>>>>
>>>> If anyone have an idea :)
>>>>
>>>> It's very strange because it's instant and random whereas it
>>>> would be
>>>> timedout all the time :/
>>>>
>>>> Thank's in advance.
>>>>
>>>> Posted at Nginx Forum:
>>>> http://forum.nginx.org/read.php?2,91854,91854#msg-91854
>>>>
>>>>
>>>> _______________________________________________
>>>> nginx mailing list
>>>> nginx at nginx.org
>>>> http://nginx.org/mailman/listinfo/nginx
>>>
>>> _______________________________________________
>>> nginx mailing list
>>> nginx at nginx.org
>>> http://nginx.org/mailman/listinfo/nginx
>>
>>
>> _______________________________________________
>> nginx mailing list
>> nginx at nginx.org
>> http://nginx.org/mailman/listinfo/nginx
>>
>>
>
> _______________________________________________
> nginx mailing list
> nginx at nginx.org
> http://nginx.org/mailman/listinfo/nginx
More information about the nginx
mailing list