我发现这很相似问题这里是 serverfault,但那里的答案没有涵盖我的情况(据我所知)。
在某些[显然]随机的基础上,Firefox(我尝试过的唯一浏览器)将尝试下载 PHP 页面而不是“加载”它。
通常,关闭下载/打开对话框并重新单击链接即可使其正常工作。有时,我需要重新启动 Apache。
这不仅让我很恼火,也让使用我服务器的其他人很恼火。你知道是什么原因造成的吗?
输出top
:
(mysqld
在此服务器上的运行速度从 1% 到 190% 不等,但我没有注意到它的峰值与 Apache 在是否提供 PHP 页面用于“打开”以及是否按应有的方式运行它方面存在关联。)
top - 15:37:38 up 44 days, 10:17, 1 user, load average: 0.11, 0.37, 0.43
Tasks: 39 total, 2 running, 37 sleeping, 0 stopped, 0 zombie
Cpu0 : 94.6% us, 5.4% sy, 0.0% ni, 0.0% id, 0.0% wa, 0.0% hi, 0.0% si
Cpu1 : 94.9% us, 5.1% sy, 0.0% ni, 0.0% id, 0.0% wa, 0.0% hi, 0.0% si
Mem: 1474560k total, 1464856k used, 9704k free, 0k buffers
Swap: 0k total, 0k used, 0k free, 0k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
3698 mysql 15 0 124m 28m 4348 S 187.0 1.9 5:26.25 mysqld
11286 root 15 0 3552 880 656 S 1.6 0.1 83:31.36 dovecot
1 root 15 0 1652 608 520 S 0.0 0.0 3:19.89 init
3622 root 15 0 21220 8992 5524 S 0.0 0.6 0:00.17 httpd
3651 root 19 0 2124 1040 888 S 0.0 0.1 0:00.00 mysqld_safe
3709 apache 15 0 41464 27m 4104 S 0.0 1.9 0:03.21 httpd
3728 apache 16 0 44008 29m 4276 S 0.0 2.1 0:07.59 httpd
3853 apache 16 0 44568 30m 4244 S 0.0 2.1 0:08.38 httpd
3869 apache 15 0 35084 20m 3040 S 0.0 1.4 0:01.82 httpd
9580 root 23 0 1548 576 492 S 0.0 0.0 0:00.00 udevd
9811 apache 15 0 32736 17m 2808 S 0.0 1.2 0:00.22 httpd
10042 root 15 0 1552 528 440 S 0.0 0.0 0:28.87 syslogd
10047 root 22 0 1492 372 308 S 0.0 0.0 0:00.00 klogd
10065 named 18 0 47508 2876 1920 S 0.0 0.2 0:37.05 named
10123 root 15 0 4068 1144 840 S 0.0 0.1 0:08.00 sshd
10137 root 18 0 2112 756 632 S 0.0 0.1 0:00.00 xinetd
11350 root 15 0 2632 1052 532 S 0.0 0.1 0:20.59 crond
11362 root 15 0 6404 2140 1072 S 0.0 0.1 3:11.85 dovecot-auth
11383 xfs 18 0 3172 1476 768 S 0.0 0.1 0:01.21 xfs
11401 root 16 0 1720 452 344 S 0.0 0.0 0:03.66 atd
11411 root 18 0 4092 804 576 S 0.0 0.1 0:00.00 saslauthd
11412 root 18 0 4092 468 240 S 0.0 0.0 0:00.00 saslauthd
11435 root 18 0 7344 5388 1628 S 0.0 0.4 1:41.01 miniserv.pl
11935 root 15 0 6944 2240 1804 S 0.0 0.2 0:00.01 sshd
11938 datente 15 0 7092 1520 1068 R 0.0 0.1 0:00.00 sshd
11939 datente 15 0 2176 1312 1052 S 0.0 0.1 0:00.00 bash
12005 datente 15 0 1912 992 788 R 0.0 0.1 0:00.00 top
12161 root 15 0 11164 480 336 S 0.0 0.0 0:00.00 vzctl
12162 root 17 0 2184 1292 1068 S 0.0 0.1 0:00.01 bash
13574 root 15 0 7380 2016 992 S 0.0 0.1 0:01.88 sendmail
13583 smmsp 18 0 6528 1640 828 S 0.0 0.1 0:00.00 sendmail
20230 datente 18 0 2748 1224 712 S 0.0 0.1 0:00.07 screen
20231 datente 15 0 2316 1344 1060 S 0.0 0.1 0:00.00 bash
20264 datente 26 10 1132m 2884 844 S 0.0 0.2 13:50.31 fah6
23843 dovecot 15 0 3556 1532 1268 S 0.0 0.1 4:06.58 imap-login
23845 dovecot 15 0 3552 1528 1268 S 0.0 0.1 4:07.76 imap-login
23847 dovecot 15 0 3556 1536 1272 S 0.0 0.1 4:09.06 imap-login
23899 dovecot 15 0 3556 1532 1268 S 0.0 0.1 4:07.39 imap-login
23963 dovecot 15 0 3556 1532 1268 S 0.0 0.1 4:06.99 imap-login
答案1
如果 PHP 在 Apache 中配置正确,并且客户端正常运行,则 PHP 脚本可能未指定内容输出的正确 MIME 类型。通常Content-type
必须打印出来,浏览器才能了解如何处理数据。
Firefox 尝试下载的文件的内容是什么?
答案2
您可以尝试使用 Apache Jarkarta Jmeter 加载您的服务器(如果不是生产服务器或者您有测试副本) http://jakarta.apache.org/jmeter/index.html
如果您从未使用过它,则需要半小时左右才能弄清楚,但它的使用相当简单。您可以发出数百个请求并查看服务器返回的信息,甚至可以根据需要呈现页面。这可以让您确定相关性,无论是加载、随机还是不正确的 headers\mime 问题。
这是一个非常棒的工具,可以用于负载时间诊断。
答案3
您是否对页面进行了预压缩,然后允许 mod_deflate 重新压缩?您遇到的问题是 Firefox 尚未从服务器收到 Content-length: 字节,因此将其视为部分下载。使用 live-http-headers,您会看到它确实具有 text/html 作为内容类型,并且保存的文件确实具有正确的呈现内容,但少了几个字节。如果内容的字节数恰好正确,则分块编码也会导致问题。
当 Firefox 遇到短暂的下载时,就会发生此问题,无论是通过超时还是连接关闭问题(通过 sigkill 等)。
Warner 新手认为内容类型设置不正确,这说明他不擅长处理大流量网络流量。我注意到这种行为在 2.2.14/2.2.15 上更常见,因此我们将一些补丁移植到了 2.2.12