我的 apache 限制了每个 vhost 的连接数。不确定这是否与此有关,但我正在使用 NameVirtualHost。
这是我的配置的一部分,我看不出它有什么问题:
<IfModule prefork.c>
StartServers 8
MinSpareServers 5
MaxSpareServers 20
ServerLimit 256
MaxClients 256
MaxRequestsPerChild 4000
</IfModule>
<IfModule worker.c>
StartServers 2
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>
它对连接进行排队,以便每个请求都排成一个队列,从而使所有内容需要更长的时间来加载!
编辑:这是所有正在加载的模块
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule auth_digest_module modules/mod_auth_digest.so
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authn_alias_module modules/mod_authn_alias.so
LoadModule authn_anon_module modules/mod_authn_anon.so
LoadModule authn_dbm_module modules/mod_authn_dbm.so
LoadModule authn_default_module modules/mod_authn_default.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule authz_owner_module modules/mod_authz_owner.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_dbm_module modules/mod_authz_dbm.so
LoadModule authz_default_module modules/mod_authz_default.so
LoadModule ldap_module modules/mod_ldap.so
LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
LoadModule include_module modules/mod_include.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule logio_module modules/mod_logio.so
LoadModule env_module modules/mod_env.so
LoadModule ext_filter_module modules/mod_ext_filter.so
LoadModule mime_magic_module modules/mod_mime_magic.so
LoadModule expires_module modules/mod_expires.so
LoadModule deflate_module modules/mod_deflate.so
LoadModule headers_module modules/mod_headers.so
LoadModule usertrack_module modules/mod_usertrack.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule mime_module modules/mod_mime.so
LoadModule dav_module modules/mod_dav.so
LoadModule status_module modules/mod_status.so
LoadModule autoindex_module modules/mod_autoindex.so
LoadModule info_module modules/mod_info.so
LoadModule dav_fs_module modules/mod_dav_fs.so
LoadModule vhost_alias_module modules/mod_vhost_alias.so
LoadModule negotiation_module modules/mod_negotiation.so
LoadModule dir_module modules/mod_dir.so
LoadModule actions_module modules/mod_actions.so
LoadModule speling_module modules/mod_speling.so
LoadModule userdir_module modules/mod_userdir.so
LoadModule alias_module modules/mod_alias.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule cache_module modules/mod_cache.so
LoadModule suexec_module modules/mod_suexec.so
LoadModule disk_cache_module modules/mod_disk_cache.so
LoadModule file_cache_module modules/mod_file_cache.so
LoadModule mem_cache_module modules/mod_mem_cache.so
LoadModule cgi_module modules/mod_cgi.so
LoadModule version_module modules/mod_version.so
我认为这可能与其中一个模块有关,但我不知道!感谢大家的帮助或提示。
答案1
Apache 不限制每个虚拟主机的连接数,除非您使用额外的第三方模块。
发生的情况是您的 MPM 设置(如上所述)对使用进程(或线程)的最大数量或请求/连接有一个限制。
接下来要做什么取决于您使用的 MPM...一个基于线程,一个基于进程,PHP 的设置方式(作为单独的进程/cgi,还是作为 Apache 模块)等等。
http://httpd.apache.org/docs/2.2/mod/worker.html
http://httpd.apache.org/docs/2.2/mod/prefork.html
还可以尝试使用 KeepAlive 设置。
KeepAlive On
KeepAliveTimeout 1
答案2
mod_cband 可以做到这一点, http://codee.pl/cband.html
您会在虚拟主机中看到如下形式的行:
# limit speed of this vhost to 10Mbit/s, 10 request/s, 30 open connections
CBandSpeed 10Mbps 10 30
由于您试图确保它不会发生,所以可能不是这样,但这是需要寻找的事情。
答案3
我明白了,这是 PHP 而不是 apache!