PHP和IIS最佳实践

我正在运行IIS和PHP,并且在负载testing下遇到了一些瓶颈。 页面被caching,但有时我们可以为用户获得长达30秒的加载时间。 这似乎发生在caching过期时。 我们正在研究很多不同的事情来解决这个问题,所以我们首先要看的是IIS和PHP。 通常我在Apache下运行PHP,并不真的有这些问题。 任何人都有一些很好的技巧/在IIS下运行PHP的最佳做法? 我们已经开启了FastCGI。

IIS上的PHP运行良好。 这并不完美,也可能不是“最佳”,但二者的结合不会固有地造成30秒的加载时间。

如果在页面生成方面确实存在问题,那么您最好在整个PHP代码中插入一个定时器,以确定哪些行导致了巨大的延迟。 如果加载embedded式元素时出现问题,可以使用Firebug或Google代码分析工具对其进行分析: http : //code.google.com/speed/tools.html

另外,有一点要记住,你说有很多应用程序的“底层”上..我假设有一个数据库后端。 有了这个说法,如果它的MySQL我有这个文本,我曾经用来帮助诊断缓慢的MySQL查询可能是问题的一部分。 我假设有与MSSQL类似的选项等

启用mysql的缓慢查询logging在/etc/my.cnf中input以下行并重新启动mysql

启用慢查询日志这是检查哪些查询花费太长时间的好工具log-slow-queries = / tmp / slow_queries.log log-update = /var/lib/mysql/updates.log

MySQL具有内置的function,可以让您将SQL查询logging到文件中。您可以将完整的SQL查询日志启用到文件中,也可以只运行缓慢的查询日志。 如果SQL查询日志启用,我们很容易解决/debuggingsql语句。慢查询日志用于查找花费很长时间执行的查询,因此是优化的候选者。

为了使你只需要添加一些行到你的my.cnf文件,然后重新启动。 添加以下内容:

只启用缓慢的查询日志log-slow-queries = /var/log/mysql/mysql-slow.log long_query_time = 1

启用慢速查询后,mysqld将语句写入慢速查询日志文件,它由所有执行long_query_time秒以上的SQL语句组成。 获取初始表锁的时间不计为执行时间。 mysqld只有在执行完SQL语句之后才会logging,并且在所有的锁被释放之后,所以日志顺序可能与执行顺序不同。 long_query_time的最小值和默认值分别是1和10。

启用完整的日志查询日志= / var / log / mysqldquery.log