1
The problem
I created a process using PHP to work with Nginx like this:
@echo off
echo Starting PHP FastCGI...
set PATH=C:\nginx\php;%PATH%
C:\nginx\php\php-cgi.exe -b 127.0.0.1:9000 -c C:\nginx\php\php.ini
pause
But if more than 500 requests occur simultaneously this process is terminated and does not send any failure message or anything like that. Note that the Ngnix process continues to work, only PHP stops "working".
To be more clear, this problem occurs when I use the ab
to test the performance of pages on an "ngnix" server in this way:
ab -n 1000 -c 10 http://127.0.0.1:8000/info.php
After executing the ab
, I have the following results:
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
apr_pollset_poll: The timeout specified has expired (70007)
Total of 503 requests completed
Then I will check the PHP process on the "CMD" screen and it is with the following message:
Starting PHP FastCGI...
Pressione qualquer tecla para continuar. . .
Clearly "CMD" went to "PAUSE" because the PHP process is over.
What might be going on?
Follow my settings:
- Ngnix 1.6.2
- PHP 5.4.12
ngnix.conf:
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 8000;
server_name localhost;
root html;
location / {
try_files $uri $uri/ /index.php;
index index.php index.html index.htm;
autoindex on;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
if (!-f $document_root$fastcgi_script_name) {
return 404;
}
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
}
}
}
php.ini
[PHP]
engine=On
default_charset="UTF-8"
short_open_tag=Off
asp_tags=Off
precision=14
output_buffering=Off
zlib.output_compression=Off
implicit_flush=Off
unserialize_callback_func=
serialize_precision=17
disable_functions=
disable_classes=
zend.enable_gc=On
expose_php=Off
max_execution_time=60
max_input_time=60
memory_limit=128M
error_reporting=E_ALL|E_STRICT
display_errors=On
display_startup_errors=On
log_errors=On
log_errors_max_len=1024
ignore_repeated_errors=Off
ignore_repeated_source=Off
report_memleaks=On
track_errors=On
html_errors=On
variables_order="GPCS"
request_order="GP"
register_argc_argv=Off
auto_globals_jit=On
post_max_size=8M
auto_prepend_file=
auto_append_file=
default_mimetype="text/html"
doc_root=
user_dir=
extension_dir=C:/ngnix/php/ext/
enable_dl=Off
file_uploads=On
upload_tmp_dir=c:/ngnix/temp/
upload_max_filesize=20M
max_file_uploads=20
allow_url_fopen=Off
allow_url_include=Off
default_socket_timeout=30
include_path=.
extension=php_curl.dll
extension=php_fileinfo.dll
extension=php_gd2.dll
extension=php_imap.dll
extension=php_intl.dll
extension=php_mbstring.dll
extension=php_exif.dll
extension=php_memcache.dll
extension=php_mongo.dll
extension=php_mysql.dll
extension=php_mysqli.dll
extension=php_openssl.dll
extension=php_pdo_mysql.dll
extension=php_pdo_sqlite.dll
extension=php_tidy.dll
extension=php_xmlrpc.dll
extension=php_phalcon.dll
[CLI Server]
cli_server.color=On
[Date]
date.timezone=UTC
[Pdo_mysql]
pdo_mysql.cache_size=2000
pdo_mysql.default_socket=
[Phar]
phar.readonly=0
[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=On
[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
[Session]
session.save_handler=files
session.save_path=c:/nginx/temp
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=On
session.bug_compat_warn=On
session.referer_check =
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
[Tidy]
tidy.clean_output=Off
[soap]
soap.wsdl_cache_enabled=1
soap.wsdl_cache_dir="c:/nginx/temp"
soap.wsdl_cache_ttl=86400
soap.wsdl_cache_limit=5
[ldap]
ldap.max_links=-1
[geoip]
geoip.custom_directory=c:/nginx/php/ext/