Apache Proxy 4秒连接延迟

我有一个大数据网站(wordpress secondry develop)一个域www.example.com。 我已经存储到3服务器。

In DNS setteing IP address (IN A / AAAA) 46.192.22.01 IP address (IN A / AAAA) 46.192.22.02 IP address (IN A / AAAA) 46.192.22.03 
  • server1 46.192.22.01 / var / www / html – > / music&/ video
  • server2 46.192.22.02 / var / www / html – > / article&/ photo
  • server3 46.192.22.03 / var / www / html – > / products&/ showroom

httpd.conf文件:

 Timeout 45 KeepAlive Off MaxKeepAliveRequests 256 KeepAliveTimeout 3 <IfModule prefork.c> StartServers 8 MinSpareServers 5 MaxSpareServers 20 ServerLimit 192 MaxClients 192 MaxRequestsPerChild 2500 </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 substitute_module modules/mod_substitute.so LoadModule rewrite_module modules/mod_rewrite.so LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_balancer_module modules/mod_proxy_balancer.so LoadModule proxy_ftp_module modules/mod_proxy_ftp.so LoadModule proxy_http_module modules/mod_proxy_http.so #LoadModule proxy_ajp_module modules/mod_proxy_ajp.so LoadModule proxy_connect_module modules/mod_proxy_connect.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 cgi_module modules/mod_cgi.so #LoadModule version_module modules/mod_version.so ExpiresActive On <FilesMatch "\.(jpg|jpeg)$"> ExpiresDefault "access plus 1 year" </FilesMatch> <FilesMatch "\.(css|png|js|gif)$"> ExpiresDefault "access plus 1 month" </FilesMatch> <ifmodule mod_deflate.c> DeflateCompressionLevel 6 AddOutputFilterByType DEFLATE text/plain AddOutputFilterByType DEFLATE text/html AddOutputFilterByType DEFLATE text/xml AddOutputFilterByType DEFLATE text/css AddOutputFilterByType DEFLATE text/javascript AddOutputFilterByType DEFLATE application/xhtml+xml AddOutputFilterByType DEFLATE application/xml AddOutputFilterByType DEFLATE application/rss+xml AddOutputFilterByType DEFLATE application/atom_xml AddOutputFilterByType DEFLATE application/x-javascript AddOutputFilterByType DEFLATE application/x-httpd-php </ifmodule> 

服务器1

 ServerName www.example.com:80 <VirtualHost *:80> ServerName www.example.com ServerAlias www.example.com DocumentRoot /var/www/html <directory "/var/www/html"> Options Indexes FollowSymLinks AllowOverride all Order Deny,Allow Deny from all Allow from all </directory> <Proxy *> Order deny,allow Allow from all </Proxy> ProxyRequests Off ProxyPass /article http://46.192.22.02/article retry=1 acquire=3000 timeout=600 Keepalive=On ProxyPassReverse /article http://46.192.22.02/article ProxyPass /photo http://46.192.22.02/photo retry=1 acquire=3000 timeout=600 Keepalive=On ProxyPassReverse /photo http://46.192.22.02/photo ProxyPass /products http://46.192.22.03/products retry=1 acquire=3000 timeout=600 Keepalive=On ProxyPassReverse /products http://46.192.22.03/products ProxyPass /showroom http://46.192.22.03/showroom retry=1 acquire=3000 timeout=600 Keepalive=On ProxyPassReverse /showroom http://46.192.22.03/showroom </VirtualHost> 

服务器2

 ServerName www.example.com:80 <VirtualHost *:80> ServerName www.example.com ServerAlias www.example.com DocumentRoot /var/www/html <directory "/var/www/html"> Options Indexes FollowSymLinks AllowOverride all Order Deny,Allow Deny from all Allow from all </directory> <Proxy *> Order deny,allow Allow from all </Proxy> ProxyRequests Off ProxyPass /music http://46.192.22.01/music retry=1 acquire=3000 timeout=600 Keepalive=On ProxyPassReverse /music http://46.192.22.01/music ProxyPass /video http://46.192.22.01/video retry=1 acquire=3000 timeout=600 Keepalive=On ProxyPassReverse /video http://46.192.22.01/video ProxyPass /products http://46.192.22.03/products retry=1 acquire=3000 timeout=600 Keepalive=On ProxyPassReverse /products http://46.192.22.03/products ProxyPass /showroom http://46.192.22.03/showroom retry=1 acquire=3000 timeout=600 Keepalive=On ProxyPassReverse /showroom http://46.192.22.03/showroom </VirtualHost> 

server(服务器)

 ServerName www.example.com:80 <VirtualHost *:80> ServerName www.example.com ServerAlias www.example.com DocumentRoot /var/www/html <directory "/var/www/html"> Options Indexes FollowSymLinks AllowOverride all Order Deny,Allow Deny from all Allow from all </directory> <Proxy *> Order deny,allow Allow from all </Proxy> ProxyRequests Off ProxyPass /music http://46.192.22.01/music retry=1 acquire=3000 timeout=600 Keepalive=On ProxyPassReverse /music http://46.192.22.01/music ProxyPass /video http://46.192.22.01/video retry=1 acquire=3000 timeout=600 Keepalive=On ProxyPassReverse /video http://46.192.22.01/video ProxyPass /products http://46.192.22.03/products retry=1 acquire=3000 timeout=600 Keepalive=On ProxyPassReverse /products http://46.192.22.03/products ProxyPass /showroom http://46.192.22.03/showroom retry=1 acquire=3000 timeout=600 Keepalive=On ProxyPassReverse /showroom http://46.192.22.03/showroom </VirtualHost> 

所有的/ etc / hosts都是

 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 

然后.htaccess文件

服务器1

 # BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^music/track/(\d+)?$ music/track.php?number=$1 RewriteRule ^video/introduce/(\d+)?$ video/introduce.php?number=$1 RewriteCond %{HTTP_HOST} ^example\.com$ [NC] RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> 

服务器2

 # BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^article/introduce/(\d+)?$ article/introduce.php?number=$1 RewriteRule ^photo/products/(\d+)?$ photo/products.php?number=$1 RewriteCond %{HTTP_HOST} ^example\.com$ [NC] RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> 

服务器3

 # BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^products/smartphone/(\d+)?$ products/smartphone.php?number=$1 RewriteRule ^showroom/smartphone/(\d+)?$ showroom/smartphone.php?number=$1 RewriteCond %{HTTP_HOST} ^example\.com$ [NC] RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> 

但是,当我打开http://www.example.com/products/smartphone/102034是非常慢(3-5秒延迟),但http://46.192.22.03/products/smartphone/102034是非常快(约0.2秒)

tail -50 /var/log/messages返回类似的日志

 Nov 18 11:46:20 dhclient[857]: DHCPACK from 46.192.22.01 (xid=0x6caa5cd9) Nov 18 11:46:21 dhclient[857]: bound to 46.192.22.02 -- renewal in 1481 seconds. 

我不擅长服务器部件技术。 任何教授都可以帮我找出并解决问题导致DNS很慢的原因吗? 谢谢。

更新1(2014/11/23)

在两天的谷歌search,仍然没有findanwser。 每个页面loding需要约4秒的连接,这是在铬控制台中查看。 如果inputip代替domainn,只需要0.2-0.4秒的连接。 我已经禁用我的ipv6在所有3服务器,我已经添加retry=1 acquire=3000 timeout=600 Keepalive=On后在ProxyPass

 #dig example.com ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6 <<>> example.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 63728 ;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;example.com. IN A ;; ANSWER SECTION: example.com. 7199 IN A 46.192.22.01 example.com. 7199 IN A 46.192.22.02 example.com. 7199 IN A 46.192.22.03 ;; Query time: 121 msec ;; SERVER: 46.61.167.22#53(46.61.167.22) ;; WHEN: Sun Nov 23 20:51:03 2014 ;; MSG SIZE rcvd: 81 

我怀疑反向代理真的是我需要的吗? Hane我发现一个错误的方法来连接我的服务器?

事实上,我有一个网站的大数据,现在我诠释成3个6,64位服务器(3 ips)。 每个服务器都有唯一的文件

  • server1 46.192.22.01 / var / www / html – > / music&/ video
  • server2 46.192.22.02 / var / www / html – > / article&/ photo
  • server3 46.192.22.03 / var / www / html – > / products&/ showroom

所以它不是一个群集平衡或代理平衡,但如何设置(或安装其他软件),让互联网知道,如果某种types“ http://www.example.com/music ”它将映射到服务器1; 有一种types的“ http://www.example.com/products ”将映射到服务器3 …对不起,我的母语不是英语,所以我从来没有find一个正确的方式,直到今天,只有反向代理才能见面我的要求。

对不起,我只有一些php,mysql的技巧,小小的apache centos技能,需要一个详细的解决scheme。 非常感谢。

更新2(2014/11/24)

另一天工作。 这似乎不是DNS查找问题。 这里是使用域时的一些screenshort 镀铬cosole与域

然后与ip相同的页面

镀铬cosole与ip

避免浏览器caching效应。 我清理了所有的浏览器caching,然后尝试先加载IP然后加载域。 最大的不同在于“停滞”和“初始连接”。

我使用top命令监视内存和cpu的使用情况,3台服务器在速度慢的时候看起来很正常。

S1

 top - 18:21:57 up 21:44, 1 user, load average: 1.08, 1.28, 1.10 Tasks: 108 total, 2 running, 106 sleeping, 0 stopped, 0 zombie Cpu(s): 7.3%us, 2.4%sy, 0.0%ni, 77.8%id, 12.2%wa, 0.0%hi, 0.0%si, 0.2%st Mem: 1922200k total, 1847432k used, 74768k free, 2224k buffers Swap: 1048572k total, 81224k used, 967348k free, 84816k cached 

S2

 top - 18:31:24 up 21:55, 1 user, load average: 0.15, 0.09, 0.02 Tasks: 119 total, 1 running, 118 sleeping, 0 stopped, 0 zombie Cpu(s): 3.0%us, 1.0%sy, 0.0%ni, 95.8%id, 0.0%wa, 0.0%hi, 0.2%si, 0.0%st Mem: 1922200k total, 1669328k used, 252872k free, 25652k buffers Swap: 1048572k total, 69256k used, 979316k free, 458528k cached 

S3

 top - 18:21:21 up 1 day, 5:57, 1 user, load average: 1.03, 0.88, 0.90 Tasks: 105 total, 2 running, 103 sleeping, 0 stopped, 0 zombie Cpu(s): 25.7%us, 20.0%sy, 0.0%ni, 53.9%id, 0.0%wa, 0.0%hi, 0.2%si, 0.2%st Mem: 1922200k total, 1758088k used, 164112k free, 58712k buffers Swap: 1048572k total, 128k used, 1048444k free, 226396k cached 

请看看平均负载。 2服务器超过值1。

事实上,在DNS中,我首先设置服务器1地址位置,但为什么服务器2成为主服务器?

它似乎仍然是DNS相关的问题,如果你通过主机名和IP连接到网站时有不同的结果。

尝试将所有三台机器添加到/ etc / hosts中,即

 46.192.22.01 server1 46.192.22.02 server2 46.192.22.03 server3 

作为一个方面的评论,你的DHCP租约时间似乎非常短,约1500秒。 典型的DHCP租赁持续一天或更长时间。 如果IP是静态的,这似乎是这种情况,您也可以考虑将它们从DHCP池中移除,并使这三台机器上的IPconfiguration保持静态。

可能问题在于Apache后端在parsing代理服务器时遇到问题。 如果是这种情况,您可以通过在每个/ etc / hosts文件中硬编码代理服务器的详细信息来解决这个问题,即通过添加一行

proxy.ip.addr http://www.example.com example.com

或者使用指令HostnameLookups Offclosures Apache中的反向DNS查找

这当然假设问题是与DNS有关,并且与通过networking的pathstream量无关(尽pipeDNS故障很可能是问题)。

你还应该在每个系统上检查你的/etc/resolv.conf文件,以确保它们都访问一个快速响应的有效的名称服务器 – 你可以通过查看这个文件来确认名称服务器是否设置为“close “给你,然后通过域名ping几个地方,看看他们需要多长时间做出回应。 (如果你执行上面的步骤,这一点变得不相关,但它仍然值得尝试解决)

从你的configuration看,没有什么是错的。 也许3台服务器之间的速度是有限的。 我会build议尝试添加以下参数作为testingProxyPass。

flushpackets = On keepalive =开启

例如:

 ProxyPass /products http://46.192.22.03/products flushpackets=On keepalive=On 

另外,请确保接收服务器没有尝试执行反向dns查找,该查询具有正在达到的超时。 你列出的ips(不知道他们是真正的IP还是假IP)没有反向DNS名称。

我有这个问题,这不是由于DNS,因为我没有使用主机名,它是MaxClient和相关的设置,它在httpd.conf中修复:

 <IfModule prefork.c> StartServers 20 MinSpareServers 15 MaxSpareServers 100 ServerLimit 2000 MaxClients 1000 MaxRequestsPerChild 10000 </IfModule> <IfModule worker.c> StartServers 20 MaxClients 1500 MinSpareThreads 25 MaxSpareThreads 75 ThreadsPerChild 25 MaxRequestsPerChild 1000 </IfModule>