很长时间到空php文件的第一个字节值

tra*_*nte 18 php apache .htaccess cakephp mod-php

几个月前我有这样的问题.现在为了隔离问题,我尝试了一种新的方法.我把一个空文件放到我的服务器上.

文件名是"foobar.php".其内容如下:

<?php
echo "hello world";
Run Code Online (Sandbox Code Playgroud)

但是当我尝试进入example.com/foobar.php时,我明白了

DNS 203毫秒
连接3.33秒
发送0毫秒
到第一个字节的时间17.35秒
接收1毫秒总加载时间20.88秒

然后我把另一个名为"foobar.txt"的文件.其内容如下:

hello world<br/>
Run Code Online (Sandbox Code Playgroud)

foob​​ar.txt的加载时间约为0.2秒.

这个网站是在共享主机内,所以我无法获得root Linux访问权限.我试图找出是什么让我的网站变慢.

  • 当我得到这些结果时,我的网站有60个访问者.并且它们在活动时发送AJAX请求.当它们处于活动状态时,它们几乎每3秒发送一次AJAX请求.
  • 一般来说,我的网站每秒有5-20个请求.
  • 我的托管服务提供商表示没有CPU过载,一般来说非常低.
  • 我向托管公司询问了Apache的限制.我得到整个共享服务器的这个值:

MaxClients 300
MaxRequestsPerChild 4000
ThreadsPerChild 25

  • example.com/mybigpage.phpexample.com/foobar.php页面几乎同时打开.
  • 如果页面有txt,jpeg或其他扩展名,则会立即打开它们.如果扩展名为php,则打开速度非常慢.
  • CakePHP将会话文件存储在"/ httpdocs/app/tmp/sessions"文件夹中.会话文件在创建两个小时后删除.现在该文件夹中有3653个文件.最早的文件是在2,5小时前创建的.
  • 在我的配置中,PHP处理程序是Apache模块mod_php

新编辑: 我和我的托管公司谈过.并告诉他们"foobar.php"几乎在20秒内打开.虽然该文件根本没有代码.他们告诉我他们把"foobar.php"放到我们使用同一台服务器的其他网站上.我也试过"othersite.com/foobar.php".它立刻打开了.但"mysite.com/foobar.php"几乎在15秒内开启.什么会造成这种行为?我们对其他网站使用相同的PHP配置,但它们会立即打开..可以是因为我的.htaccess规则吗?还是其他的事情?

新Edit2: 我的提供商告诉我服务器内没有"apd.so"文件.所以我好像不能使用APD.

我应该寻找什么才能找到瓶颈?
什么会限制我的网站?


附加数据:来自phpinfo,我得到了这个:

'./configure'' - prefix =/usr/local/lsws/lsphp5'' - build = x86_64-redhat-linux-gnu'' - host = x86_64-redhat-linux-gnu'' - target = x86_64-redhat-linux-gnu'' - sysconfdir =/etc'' - datadir =/usr/share'' - includenid =/usr/include'' - libdir =/usr/lib64'' - libdcdir =/usr/libexec'' - localstatedir =/var'' - sharedstatedir =/usr/com'' - mandir =/usr/share/man'' - infodir =/usr/share/info'' - -cache-file = ../config.cache'' - with-libdir = lib64'' - with-config-file-path =/etc'' - with-config-file-scan-dir =/etc /php.dd'' - disable-debug'' - with-pic'' - disable-rpath'' - without-pear'' - with-bz2'' - with-curl'' - with-exec-dir =/usr/bin'' - with-freetype-dir =/usr'' - with-png-dir =/usr'' - without-gdbm'' - with-gettext'' --with-gmp'' - with-iconv'' - with-jpeg-dir =/usr'' - with-openssl'' - with-libexpat-dir =/usr/lib64'' - with -pcre-regex =/usr'' - with-zlib'' - with-layout = GNU'' - enable-exif'' - enable-ftp''--enable-magic-quotes'' - enable-socket"' - enable-sysvsem'' - enable-sysvshm'' - enable-sysvmsg'' - e nable-wddx'' - with-kerberos'' - enable-ucd-snmp-hack'' - with-unixODBC = shared,/ usr'' - enable-shmop'' - enable-calendar'' - -with-libxml-dir =/usr'' - with-mysql'' - with-mysqli'' - with-gd'' - enable-dom'' - disable-dba'' - withoutout- unixODBC'' - enable-xmlreader'' - enable-xmlwriter'' - with-mcrypt'' - enable-mbstring'' - with-litespeed'' - enable-soap'' - with-xsl '' - -pdo-mysql'' - with-pdo-sqlite'' - enable-sqlite-utf8'' - with-pspell'' - with-sqlite = shared'' - with-xmlrpc '' - with-mhash'' - enable-pdo'' - with-imap'' - with-imap-ssl'' - without-suhosin'' - with-tidy''--enable- zip'' - enable-inline-optimization'' - enable-gd-native-ttf'' - enable-bcmath'

mjk*_*mjk 6

似乎很明显是一个PHP问题,因为Apache在提供静态文件方面没有问题.您是否尝试过从 PECL 安装APD

使用像APD这样的PHP分析器将向您显示瓶颈是否在PHP中,如果是,它将在何处.例如,你正在使用的框架是否缓慢?或者只是一个流氓扩展?

从官方手册中解释:

使用APD,您只需在入口点添加一条指令:

<?php
apd_set_pprof_trace();
?>
Run Code Online (Sandbox Code Playgroud)

APD会将分析信​​息转储到*apd.dumpdir/pprof_pid.ext*.

然后,pprofp将使用您的转储文件并告诉您哪些方法正在缩短响应时间:

bash-2.05b$ pprofp -R /tmp/pprof.22141.0

Trace for /home/dan/testapd.php
Total Elapsed Time = 0.00
Total System Time  = 0.00
Total User Time    = 0.00


Real         User        System             secs/    cumm
%Time (excl/cumm)  (excl/cumm)  (excl/cumm) Calls    call    s/call  Memory Usage Name
--------------------------------------------------------------------------------------
100.0 0.00 0.00  0.00 0.00  0.00 0.00     1  0.0000   0.0009            0 main
56.9 0.00 0.00  0.00 0.00  0.00 0.00     1  0.0005   0.0005            0 apd_set_pprof_trace
28.0 0.00 0.00  0.00 0.00  0.00 0.00    10  0.0000   0.0000            0 preg_replace
14.3 0.00 0.00  0.00 0.00  0.00 0.00    10  0.0000   0.0000            0 str_replace
Run Code Online (Sandbox Code Playgroud)

如果您看到的延迟都没有显示在配置文件中,则表明它是系统范围的PHP配置问题(可能是流氓或配置错误的扩展).但我猜它是框架中的东西.

  • "似乎很明显是一个PHP问题" - 令人失望的是,这个答案从一个现在明显的错误陈述开始就获得了奖励. (2认同)