mod_fcgid: read data timeout in 31 seconds ?

Hi.
I’m running Apache/2.2.16 (Ubuntu) , libapache2-mod-fcgid
1:2.3.5-2ubuntu0.1, php5-cgi 5.3.3-1ubuntu9.6. on Ubuntu 10.10 LTS,
in a Virtualmin LAMP stack. Each Virtualhost runs suexec, thus the
need for mod-fcgid so that each site is running under its own user
account.

I have a clean install of PHPWiki , latest stable version. I’m trying
to import the data from the old install of PHPWiki (3.2 MB zip), using
the restore feature, every time I try the restore the process crashes
with “500 Internal server error” the the following in the logs :

[Wed Nov 16 10:21:14 2011] [warn] [client 192.168.69.237] mod_fcgid:
read data timeout in 31 seconds, referer:
http://test-phpwiki.example.com/index.php/PhpWikiAdministration
[Wed Nov 16 10:21:14 2011] [warn] [client 192.168.69.237]
(110)Connection timed out: mod_fcgid: ap_pass_brigade failed in
handle_request function, referer:
http://test-phpwiki.example.com/index.php/PhpWikiAdministration

I have adjusted every setting I can find in php, mod-fcgid, and
apache. I’v googled for the last day and a half with no clear answer.

Configuration as follows:

root@nzhmlapp04:/home/phpwiki# cat fcgi-bin/php5.fcgi
#!/bin/bash
PHPRC=$PWD/…/etc/php5
export PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_CHILDREN=8
export PHPRC
umask 022
SCRIPT_FILENAME=$PATH_TRANSLATED
export SCRIPT_FILENAME
exec /usr/bin/php5-cgi

root@nzhmlapp04:/home/phpwiki# cat /etc/apache2/mods-enabled/fcgid.conf

AddHandler fcgid-script .fcgi
FcgidConnectTimeout 300
MaxRequestLen 1000000000
IdleTimeout 3600
ProcessLifeTime 7200
MaxProcessCount 1000
DefaultMinClassProcessCount 3
DefaultMaxClassProcessCount 100
IPCConnectTimeout 60
IPCCommTimeout 600
BusyTimeout 300

apache2.conf

root@nzhmlapp04:/home/phpwiki# cat /etc/apache2/apache2.conf | grep
-v “#” | grep [^[:space:]]
ServerRoot “/etc/apache2”
LockFile /var/lock/apache2/accept.lock
PidFile ${APACHE_PID_FILE}
TimeOut 300
KeepAlive on
MaxKeepAliveRequests 100
KeepAliveTimeout 60

StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 0


StartServers 2
MinSpareThreads 25
MaxSpareThreads 75
ThreadLimit 64
ThreadsPerChild 25
MaxClients 150
MaxRequestsPerChild 0


StartServers 2
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadLimit 64
ThreadsPerChild 25
MaxRequestsPerChild 0

User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}
AccessFileName .htaccess
<Files ~ “^.ht”>
Order allow,deny
Deny from all
Satisfy all

DefaultType text/plain
HostnameLookups Off
ErrorLog /var/log/apache2/error.log
LogLevel warn
Include /etc/apache2/mods-enabled/.load
Include /etc/apache2/mods-enabled/
.conf
Include /etc/apache2/httpd.conf
Include /etc/apache2/ports.conf
LogFormat “%v:%p %h %l %u %t “%r” %>s %O “%{Referer}i”
“%{User-Agent}i”” vhost_combined
LogFormat “%h %l %u %t “%r” %>s %O “%{Referer}i”
“%{User-Agent}i”” combined
LogFormat “%h %l %u %t “%r” %>s %O” common
LogFormat “%{Referer}i -> %U” referer
LogFormat “%{User-agent}i” agent
CustomLog /var/log/apache2/other_vhosts_access.log vhost_combined
Include /etc/apache2/conf.d/
Include /etc/apache2/sites-enabled/
NameVirtualHost 192.168.32.22:80

apache virtualhost

SuexecUserGroup “#1014” “#1014
ServerName phpwiki.example.com
ServerAlias www.phpwiki.example.com
ServerAlias test-phpwiki.example.com
ServerAlias webmail.phpwiki.example.com
ServerAlias admin.phpwiki.example.com
DocumentRoot /home/phpwiki/public_html
ErrorLog /var/log/virtualmin/phpwiki.example.com_error_log
CustomLog /var/log/virtualmin/phpwiki.example.com_access_log combined
ScriptAlias /cgi-bin/ /home/phpwiki/cgi-bin/
ScriptAlias /awstats/ /home/phpwiki/cgi-bin/
DirectoryIndex index.html index.htm index.php index.php4 index.php5
<Directory /home/phpwiki/public_html>
Options -Indexes +IncludesNOEXEC +FollowSymLinks +ExecCGI
allow from all
AllowOverride All
AddHandler fcgid-script .php
AddHandler fcgid-script .php5
FCGIWrapper /home/phpwiki/fcgi-bin/php5.fcgi .php
FCGIWrapper /home/phpwiki/fcgi-bin/php5.fcgi .php5

<Directory /home/phpwiki/cgi-bin>
allow from all

RewriteEngine on
RewriteCond %{HTTP_HOST} =webmail.phpwiki.example.com
RewriteRule ^(.) https://phpwiki.example.com:20000/ [R]
RewriteCond %{HTTP_HOST} =admin.phpwiki.example.com
RewriteRule ^(.
) https://phpwiki.example.com:10000/ [R]
RemoveHandler .php
RemoveHandler .php5
IPCCommTimeout 31

AuthName “phpwiki.example.com statistics”
AuthType Basic
AuthUserFile /home/phpwiki/.awstats-htpasswd
require valid-user

php.ini

[PHP]
engine = On
short_open_tag = On
asp_tags = Off
precision = 14
y2k_compliance = On
output_buffering = 4096
zlib.output_compression = Off
implicit_flush = Off
unserialize_callback_func =
serialize_precision = 100
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 =
expose_php = On
max_execution_time = 600
max_input_time = 600
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 = On
error_log = /home/phpwiki/logs/php_errors.log
variables_order = “GPCS”
request_order = “GP”
register_globals = Off
register_long_arrays = Off
register_argc_argv = Off
auto_globals_jit = On
post_max_size = 32M
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_tmp_dir = /home/phpwiki/tmp
upload_max_filesize = 32M
max_file_uploads = 20
allow_url_fopen = On
allow_url_include = Off
default_socket_timeout = 240
[Date]
[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]
[PostgresSQL]
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.save_path = /home/phpwiki/tmp
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]

Any ideas what could be causing this , and how do I resolve it ?

Thanks

Howdy,

Yeah, it looks like you’re running into a FCGID timeout.

If you go into Server Configuration -> Website Options, you can set “Maximum PHP script run time” to a larger value. That should change both the PHP configs as well as the FCGID config.

If you still have trouble with the import after making that change – you could always change the PHP Execution Mode temporarily to CGI to perform the restore – you may run into less problems that way.

-Eric