
我正在使用Apache + mod_fastcgi + PHP-fpm。 我尝试parsing大文件,并在PHP脚本max_execution_time设置为0,但脚本失败30秒后错误日志中的消息:“FastCGI:通信与服务器”/ usr / lib / cgi-bin / lz-fcgi“中止:空闲超时(30秒)“。 在下面的configuration中,您可以看到-IDle-timeout指令被设置为900秒,而且我很困惑服务器获得值30s的位置? 当我切换到mod_PHP或mod_fcgID这没关系,这个MODS的所有适当的设置正在工作请帮助在哪里看?
这里configuration:Apache全局configuration示例
<IfModule mod_fastcgi.c> AddHandler fastcgi-script .fcgi FastCgiIpcDir /usr/local/etc/PHP-fpm/ FastCgiConfig -singleThreshold 100 -killinterval 300 -IDle-timeout 900 -maxClassprocesses 1 -pass-header http_AUTHORIZATION FastCgiWrapper /usr/lib/apache2/suexec #AddHandler PHP5-fcgi .PHP .PHP3 .PHP4 .PHP5 .pHTML #Action PHP5-fcgi /PHP5-fcgi #Alias /PHP5-fcgi /usr/lib/cgi-bin/PHP5-fcgi </IfModule>
Vhost的例子
<VirtualHost *:80 > Servername site.ru documentRoot /var/www/site.ru ServerAlias www.site.ru SuexecUserGroup user group ScriptAlias /cgi-bin/ /var/www/site/cgi-bin/ <IfModule mod_fastcgi.c> FastCgIExternalServer /usr/lib/cgi-bin/lz-fcgi -socket /tmp/lz-fcgi.sock -IDle-timeout 900 -user user -group group AddHandler lz-fcgi .PHP .PHP3 .PHP4 .PHP5 .pHTML Action lz-fcgi /lz-fcgi Alias /lz-fcgi /usr/lib/cgi-bin/lz-fcgi </IfModule>
PHP-fpm conf
.htaccess:如果调用特定的目录,则重写整个URL
无法与AFNetworking 2一起使用自签名证书
如何在Apache中设置mod_lua来访问第三方Lua模块?
使用htaccessredirect一个目录,但不是其中的文件
我如何运行长期(无限)的Python进程?
;;;;;;;;;;;;;;;;;;;;; ; FPM Configuration ; ;;;;;;;;;;;;;;;;;;;;; ; All relative paths in this configuration file are relative to PHP's install ; prefix (/usr). This prefix can be dynamicaly changed by using the ; '-p' argument from the command line. ; Include one or more files. If glob(3) exists,it is used to include a bunch of ; files from a glob(3) pattern. This directive can be used everywhere in the ; file. ; relative path can also be used. They will be prefixed by: ; - the global prefix if it's been set (-p arguement) ; - /usr otherwise ;include=etc/PHP5/fpm/*.conf ;;;;;;;;;;;;;;;;;; ; Global Options ; ;;;;;;;;;;;;;;;;;; [global] ; PID file ; Note: the default prefix is /var ; Default Value: none pID = /var/run/PHP5-fpm.pID ; Error log file ; If it's set to "syslog",log is sent to syslogd instead of being written ; in a local file. ; Note: the default prefix is /var ; Default Value: log/PHP-fpm.log error_log = /var/log/PHP5-fpm.log ; syslog_facility is used to specify what type of program is logging the ; message. This lets syslogd specify that messages from different facilitIEs ; will be handled differently. ; See syslog(3) for possible values (ex daemon equiv LOG_DAEMON) ; Default Value: daemon ;syslog.facility = daemon ; syslog_IDent is prepended to every message. If you have multiple FPM ; instances running on the same server,you can change the default value ; which must suit common needs. ; Default Value: PHP-fpm ;syslog.IDent = PHP-fpm ; Log level ; Possible Values: alert,error,warning,notice,deBUG ; Default Value: notice ;log_level = notice ; If this number of child processes exit with SIGSEGV or SIGBUS within the time ; interval set by emergency_restart_interval then FPM will restart. A value ; of '0' means 'Off'. ; Default Value: 0 ;emergency_restart_threshold = 0 ; Interval of time used by emergency_restart_interval to determine when ; a graceful restart will be initiated. This can be useful to work around ; accIDental corruptions in an accelerator's shared memory. ; Available Units: s(econds),m(inutes),h(ours),or d(ays) ; Default Unit: seconds ; Default Value: 0 ;emergency_restart_interval = 0 ; Time limit for child processes to wait for a reaction on signals from master. ; Available units: s(econds),or d(ays) ; Default Unit: seconds ; Default Value: 0 ;process_control_timeout = 0 ; The maximum number of processes FPM will fork. This has been design to control ; the global number of processes when using dynamic PM within a lot of pools. ; Use it with caution. ; Note: A value of 0 indicates no limit ; Default Value: 0 ; process.max = 128 ; Specify the nice(2) priority to apply to the master process (only if set) ; The value can vary from -19 (highest priority) to 20 (lower priority) ; Note: - It will only work if the FPM master process is launched as root ; - The pool process will inherit the master process priority ; unless it specifIEd otherwise ; Default Value: no set ; process.priority = -19 ; Send FPM to background. Set to 'no' to keep FPM in foreground for deBUGging. ; Default Value: yes ;daemonize = yes ; Set open file descriptor rlimit for the master process. ; Default Value: system defined value ;rlimit_files = 1024 ; Set max core size rlimit for the master process. ; Possible Values: 'unlimited' or an integer greater or equal to 0 ; Default Value: system defined value ;rlimit_core = 0 ; Specify the event mechanism FPM will use. The following is available: ; - select (any POSIX os) ; - poll (any POSIX os) ; - epoll (linux >= 2.5.44) ; - kqueue (FreeBSD >= 4.1,OpenBSD >= 2.9,NetBSD >= 2.0) ; - /dev/poll (Solaris >= 7) ; - port (Solaris >= 10) ; Default Value: not set (auto detection) ; events.mechanism = epoll ;;;;;;;;;;;;;;;;;;;; ; Pool DeFinitions ; ;;;;;;;;;;;;;;;;;;;; ; Multiple pools of child processes may be started with different Listening ; ports and different management options. The name of the pool will be ; used in logs and stats. There is no limitation on the number of pools which ; FPM can handle. Your system will tell you anyway :) ; To configure the pools it is recommended to have one .conf file per ; pool in the following directory: include=/etc/PHP5/fpm/pool.d/*.conf
PHP-pfm池conf
; Start a new pool named 'www'. ; the variable $pool can we used in any directive and will be replaced by the ; pool name ('www' here) [lz] ; Per pool prefix ; It only applIEs on the following directives: ; - 'slowlog' ; - 'Listen' (unixsocket) ; - 'chroot' ; - 'chdir' ; - 'PHP_values' ; - 'PHP_admin_values' ; When not set,the global prefix (or /usr) applIEs instead. ; Note: This directive can also be relative to the global prefix. ; Default Value: none ;prefix = /path/to/pools/$pool ; Unix user/group of processes ; Note: The user is mandatory. If the group is not set,the default user's group ; will be used. user = letomzimoy group = letomzimoy ; The address on which to accept FastCGI requests. ; ValID Syntaxes are: ; 'ip.add.re.ss:port' - to Listen on a TCP socket to a specific address on ; a specific port; ; 'port' - to Listen on a TCP socket to all addresses on a ; specific port; ; '/path/to/unix/socket' - to Listen on a unix socket. ; Note: This value is mandatory. ;Listen = 127.0.0.1:9000 Listen = /tmp/lz-fcgi.sock ; Set Listen(2) backlog. A value of '-1' means unlimited. ; Default Value: 128 (-1 on FreeBSD and OpenBSD) ;Listen.backlog = -1 ; Set permissions for unix socket,if one is used. In linux,read/write ; permissions must be set in order to allow connections from a web server. Many ; BSD-derived systems allow connections regardless of permissions. ; Default Values: user and group are set as the running user ; mode is set to 0666 ;Listen.owner = www-data ;Listen.group = www-data ;Listen.mode = 0666 ; List of ipv4 addresses of FastCGI clIEnts which are allowed to connect. ; Equivalent to the FCGI_WEB_SERVER_ADDRS environment variable in the original ; PHP FCGI (5.2.2+). Makes sense only with a tcp Listening socket. Each address ; must be separated by a comma. If this value is left blank,connections will be ; accepted from any ip address. ; Default Value: any ;Listen.allowed_clIEnts = 127.0.0.1 ; Specify the nice(2) priority to apply to the pool processes (only if set) ; The value can vary from -19 (highest priority) to 20 (lower priority) ; Note: - It will only work if the FPM master process is launched as root ; - The pool processes will inherit the master process priority ; unless it specifIEd otherwise ; Default Value: no set ; priority = -19 ; Choose how the process manager will control the number of child processes. ; Possible Values: ; static - a fixed number (pm.max_children) of child processes; ; dynamic - the number of child processes are set dynamically based on the ; following directives. With this process management,there will be ; always at least 1 children. ; pm.max_children - the maximum number of children that can ; be alive at the same time. ; pm.start_servers - the number of children created on startup. ; pm.min_spare_servers - the minimum number of children in 'IDle' ; state (waiting to process). If the number ; of 'IDle' processes is less than this ; number then some children will be created. ; pm.max_spare_servers - the maximum number of children in 'IDle' ; state (waiting to process). If the number ; of 'IDle' processes is greater than this ; number then some children will be killed. ; ondemand - no children are created at startup. Children will be forked when ; new requests will connect. The following parameter are used: ; pm.max_children - the maximum number of children that ; can be alive at the same time. ; pm.process_IDle_timeout - The number of seconds after which ; an IDle process will be killed. ; Note: This value is mandatory. pm = ondemand ; The number of child processes to be created when pm is set to 'static' and the ; maximum number of child processes when pm is set to 'dynamic' or 'ondemand'. ; This value sets the limit on the number of simultaneous requests that will be ; served. Equivalent to the ApacheMaxClIEnts directive with mpm_prefork. ; Equivalent to the PHP_FCGI_CHILDREN environment variable in the original PHP ; CGI. The below defaults are based on a server without much resources. Don't ; forget to tweak pm.* to fit your needs. ; Note: Used when pm is set to 'static','dynamic' or 'ondemand' ; Note: This value is mandatory. pm.max_children = 8 ; The number of child processes created on startup. ; Note: Used only when pm is set to 'dynamic' ; Default Value: min_spare_servers + (max_spare_servers - min_spare_servers) / 2 pm.start_servers = 2 ; The desired minimum number of IDle server processes. ; Note: Used only when pm is set to 'dynamic' ; Note: Mandatory when pm is set to 'dynamic' pm.min_spare_servers = 1 ; The desired maximum number of IDle server processes. ; Note: Used only when pm is set to 'dynamic' ; Note: Mandatory when pm is set to 'dynamic' pm.max_spare_servers = 3 ; The number of seconds after which an IDle process will be killed. ; Note: Used only when pm is set to 'ondemand' ; Default Value: 10s pm.process_IDle_timeout = 900s; ; The number of requests each child process should execute before respawning. ; This can be useful to work around memory leaks in 3rd party librarIEs. For ; endless request processing specify '0'. Equivalent to PHP_FCGI_MAX_REQUESTS. ; Default Value: 0 pm.max_requests = 500 ; The URI to vIEw the FPM status page. If this value is not set,no URI will be ; recognized as a status page. It shows the following informations: ; pool - the name of the pool; ; process manager - static,dynamic or ondemand; ; start time - the date and time FPM has started; ; start since - number of seconds since FPM has started; ; accepted conn - the number of request accepted by the pool; ; Listen queue - the number of request in the queue of pending ; connections (see backlog in Listen(2)); ; max Listen queue - the maximum number of requests in the queue ; of pending connections since FPM has started; ; Listen queue len - the size of the socket queue of pending connections; ; IDle processes - the number of IDle processes; ; active processes - the number of active processes; ; total processes - the number of IDle + active processes; ; max active processes - the maximum number of active processes since FPM ; has started; ; max children reached - number of times,the process limit has been reached,; when pm trIEs to start more children (works only for ; pm 'dynamic' and 'ondemand'); ; Value are updated in real time. ; Example output: ; pool: www ; process manager: static ; start time: 01/Jul/2011:17:53:49 +0200 ; start since: 62636 ; accepted conn: 190460 ; Listen queue: 0 ; max Listen queue: 1 ; Listen queue len: 42 ; IDle processes: 4 ; active processes: 11 ; total processes: 15 ; max active processes: 12 ; max children reached: 0 ; ; By default the status page output is formatted as text/plain. Passing either ; 'HTML','xml' or 'Json' in the query string will return the corresponding ; output Syntax. Example: ; http://www.foo.bar/status ; http://www.foo.bar/status?Json ; http://www.foo.bar/status?HTML ; http://www.foo.bar/status?xml ; ; By default the status page only outputs short status. Passing 'full' in the ; query string will also return status for each pool process. ; Example: ; http://www.foo.bar/status?full ; http://www.foo.bar/status?Json&full ; http://www.foo.bar/status?HTML&full ; http://www.foo.bar/status?xml&full ; The Full status returns for each process: ; pID - the PID of the process; ; state - the state of the process (IDle,Running,...); ; start time - the date and time the process has started; ; start since - the number of seconds since the process has started; ; requests - the number of requests the process has served; ; request duration - the duration in µs of the requests; ; request method - the request method (GET,POST,...); ; request URI - the request URI with the query string; ; content length - the content length of the request (only with POST); ; user - the user (PHP_AUTH_USER) (or '-' if not set); ; script - the main script called (or '-' if not set); ; last request cpu - the %cpu the last request consumed ; it's always 0 if the process is not in IDle state ; because cpu calculation is done when the request ; processing has terminated; ; last request memory - the max amount of memory the last request consumed ; it's always 0 if the process is not in IDle state ; because memory calculation is done when the request ; processing has terminated; ; If the process is in IDle state,then informations are related to the ; last request the process has served. Otherwise informations are related to ; the current request being served. ; Example output: ; ************************ ; pID: 31330 ; state: Running ; start time: 01/Jul/2011:17:53:49 +0200 ; start since: 63087 ; requests: 12808 ; request duration: 1250261 ; request method: GET ; request URI: /test_mem.PHP?N=10000 ; content length: 0 ; user: - ; script: /home/fat/web/docs/PHP/test_mem.PHP ; last request cpu: 0.00 ; last request memory: 0 ; ; Note: There is a real-time FPM status monitoring sample web page available ; It's available in: ${prefix}/share/fpm/status.HTML ; ; Note: The value must start with a leading slash (/). The value can be ; anything,but it may not be a good IDea to use the .PHP extension or it ; may conflict with a real PHP file. ; Default Value: not set ;pm.status_path = /status ; The Ping URI to call the monitoring page of FPM. If this value is not set,no ; URI will be recognized as a Ping page. This Could be used to test from outsIDe ; that FPM is alive and responding,or to ; - create a graph of FPM availability (rrd or such); ; - remove a server from a group if it is not responding (load balancing); ; - trigger alerts for the operating team (24/7). ; Note: The value must start with a leading slash (/). The value can be ; anything,but it may not be a good IDea to use the .PHP extension or it ; may conflict with a real PHP file. ; Default Value: not set ;Ping.path = /Ping ; This directive may be used to customize the response of a Ping request. The ; response is formatted as text/plain with a 200 response code. ; Default Value: pong ;Ping.response = pong ; The access log file ; Default: not set ;access.log = log/$pool.access.log ; The access log format. ; The following Syntax is allowed ; %%: the '%' character ; %C: %cpu used by the request ; it can accept the following format: ; - %{user}C for user cpu only ; - %{system}C for system cpu only ; - %{total}C for user + system cpu (default) ; %d: time taken to serve the request ; it can accept the following format: ; - %{seconds}d (default) ; - %{miliseconds}d ; - %{mili}d ; - %{microseconds}d ; - %{micro}d ; %e: an environment variable (same as $_ENV or $_SERVER) ; it must be associated with embraces to specify the name of the env ; variable. Some exemples: ; - server specifics like: %{REQUEST_METHOD}e or %{SERVER_PROTOCol}e ; - http headers like: %{http_HOST}e or %{http_USER_AGENT}e ; %f: script filename ; %l: content-length of the request (for POST request only) ; %m: request method ; %M: peak of memory allocated by PHP ; it can accept the following format: ; - %{bytes}M (default) ; - %{kilobytes}M ; - %{kilo}M ; - %{megabytes}M ; - %{mega}M ; %n: pool name ; %o: ouput header ; it must be associated with embraces to specify the name of the header: ; - %{Content-Type}o ; - %{X-Powered-By}o ; - %{Transfert-EnCoding}o ; - .... ; %p: PID of the child that serviced the request ; %P: PID of the parent of the child that serviced the request ; %q: the query string ; %Q: the '?' character if query string exists ; %r: the request URI (without the query string,see %q and %Q) ; %r: remote IP address ; %s: status (response code) ; %t: server time the request was received ; it can accept a strftime(3) format: ; %d/%b/%Y:%H:%M:%s %z (default) ; %T: time the log has been written (the request has finished) ; it can accept a strftime(3) format: ; %d/%b/%Y:%H:%M:%s %z (default) ; %u: remote user ; ; Default: "%r - %u %t "%m %r" %s" ;access.format = "%r - %u %t "%m %r%Q%q" %s %f %{mili}d %{kilo}M %C%%" ; The log file for slow requests ; Default Value: not set ; Note: slowlog is mandatory if request_slowlog_timeout is set ;slowlog = log/$pool.log.slow ; The timeout for serving a single request after which a PHP backtrace will be ; dumped to the 'slowlog' file. A value of '0s' means 'off'. ; Available units: s(econds)(default),or d(ays) ; Default Value: 0 ;request_slowlog_timeout = 0 ; The timeout for serving a single request after which the worker process will ; be killed. This option should be used when the 'max_execution_time' ini option ; does not stop script execution for some reason. A value of '0' means 'off'. ; Available units: s(econds)(default),or d(ays) ; Default Value: 0 ;request_terminate_timeout = 0 ; Set open file descriptor rlimit. ; Default Value: system defined value ;rlimit_files = 1024 ; Set max core size rlimit. ; Possible Values: 'unlimited' or an integer greater or equal to 0 ; Default Value: system defined value ;rlimit_core = 0 ; Chroot to this directory at the start. This value must be defined as an ; absolute path. When this value is not set,chroot is not used. ; Note: you can prefix with '$prefix' to chroot to the pool prefix or one ; of its subdirectorIEs. If the pool prefix is not set,the global prefix ; will be used instead. ; Note: chrooting is a great security feature and should be used whenever ; possible. However,all PHP paths will be relative to the chroot ; (error_log,sessions.save_path,...). ; Default Value: not set ;chroot = ; Chdir to this directory at the start. ; Note: relative path can be used. ; Default Value: current directory or / when chroot chdir = / ; Redirect worker stdout and stderr into main error log. If not set,stdout and ; stderr will be redirected to /dev/null according to FastCGI specs. ; Note: on highloaded environement,this can cause some delay in the page ; process time (several ms). ; Default Value: no ;catch_workers_output = yes ; limits the extensions of the main script FPM will allow to parse. This can ; prevent configuration mistakes on the web server sIDe. You should only limit ; FPM to .PHP extensions to prevent malicIoUs users to use other extensions to ; exectute PHP code. ; Note: set an empty value to allow all extensions. ; Default Value: .PHP ;security.limit_extensions = .PHP .PHP3 .PHP4 .PHP5 ; Pass environment variables like LD_liBRARY_PATH. All $VARIABLEs are taken from ; the current environment. ; Default Value: clean env ;env[HOSTname] = $HOSTname ;env[PATH] = /usr/local/bin:/usr/bin:/bin ;env[TMP] = /tmp ;env[TMPDIR] = /tmp ;env[TEMP] = /tmp ; Additional PHP.ini defines,specific to this pool of workers. These settings ; overwrite the values prevIoUsly defined in the PHP.ini. The directives are the ; same as the PHP SAPI: ; PHP_value/PHP_flag - you can set classic ini defines which can ; be overwritten from PHP call 'ini_set'. ; PHP_admin_value/PHP_admin_flag - these directives won't be overwritten by ; PHP call 'ini_set' ; For PHP_*flag,valID values are on,off,1,true,false,yes or no. ; Defining 'extension' will load the corresponding shared extension from ; extension_dir. Defining 'disable_functions' or 'disable_classes' will not ; overwrite prevIoUsly defined PHP.ini values,but will append the new value ; instead. ; Note: path INI options can be relative and will be expanded with the prefix ; (pool,global or /usr) ; Default Value: nothing is defined by default except the values in PHP.ini and ; specifIEd at startup with the -d argument ;PHP_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i -f www@my.domain.com ;PHP_flag[display_errors] = off ;PHP_admin_value[error_log] = /var/log/fpm-PHP.www.log ;PHP_admin_flag[log_errors] = on ;PHP_admin_value[memory_limit] = 32M
除了RSS提要,htaccess强制ssl
打开RewriteEngine创build403错误 – 如何打开FollowSymlinks?
在Apache上没有尾随斜杠的虚浮URL
Apache RewriteCond中variables的负面比较
我的httpd.conf是空的
我现在找到问题的所在。 我有几个虚拟主机具有相同的指令
FastCgIExternalserver /usr/lib/cgi-bin/lz-fcgi -socket /tmp/lz-fcgi.sock -IDle-timeout 900 -user user -group group
当我将-IDle-timeout添加到每个Vhost配置时,所有的一切都按照预期工作,超时应用于请求
<VirtualHost site.ru:80 > servername site.ru documentRoot /var/www/site.ru serverAlias www.site.ru SuexecUserGroup user group ScriptAlias /cgi-bin/ /var/www/site/cgi-bin/ <Ifmodulee mod_fastcgi.c> FastCgIExternalserver /usr/lib/cgi-bin/lz-fcgi -socket /tmp/lz-fcgi.sock -IDle-timeout 900 -user user -group group AddHandler lz-fcgi .PHP .PHP3 .PHP4 .PHP5 .pHTML Action lz-fcgi /lz-fcgi Alias /lz-fcgi /usr/lib/cgi-bin/lz-fcgi </Ifmodulee> </VirtualHost> <VirtualHost secondsite.ru:80 > servername secondsite.ru documentRoot /var/www/secondsite.ru serverAlias www.secondsite.ru SuexecUserGroup user group ScriptAlias /cgi-bin/ /var/www/secondsite/cgi-bin/ <Ifmodulee mod_fastcgi.c> FastCgIExternalserver /usr/lib/cgi-bin/lz-fcgi -socket /tmp/lz-fcgi.sock -IDle-timeout 900 -user user -group group AddHandler lz-fcgi .PHP .PHP3 .PHP4 .PHP5 .pHTML Action lz-fcgi /lz-fcgi Alias /lz-fcgi /usr/lib/cgi-bin/lz-fcgi </Ifmodulee> </VirtualHost>
我有同样的问题,甚至坠毁我的网站与错误500当进程超过空闲超时。 我通过设置request_terminate_timeout小于空闲超时来解决这个问题,所以长进程在达到空闲超时之前被终止。
总结以上是内存溢出为你收集整理的mod_fastcgi空闲超时不起作用全部内容,希望文章能够帮你解决mod_fastcgi空闲超时不起作用所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)