当前位置:  开发笔记 > 编程语言 > 正文

优化PHP,MYSQL社区网站性能

如何解决《优化PHP,MYSQL社区网站性能》经验,为你挑选了1个好方法。

我拥有一个大约12.000个用户的社区网站(写得很重),单个VPS上有100个并发用户,1Gb内存.负载很少超过3,响应非常好.

目前,一个简单的文件缓存用于存储数据库查询结果,以减轻数据库的负载,但该网站仍然可以减慢220多个并发用户(负载测试).

我怎样才能找出瓶颈是什么?

我认为数据库很好,因为缓存工作正常,但磁盘IO可能会导致问题.每个页面加载有大约10个包含和来自DB或文件缓存的10-20个查询,以及大量的php处理.

我尝试使用memcache而不是文件缓存,但令我惊讶的是,负载测试似乎更喜欢文件缓存.

我计划使用Alternative PHP Cache,但我仍然不太了解缓存是如何失效的.我有一个单独的index.php来处理所有请求.缓存是否会存储每个请求的结果?如果我的一个包含(或缓存中的查询结果)发生变化,它会自动清除缓存吗?

找到瓶颈的任何其他建议(试过xdebug)?

谢谢,哈姆雷特



1> Frank Farmer..:

我计划使用Alternative PHP Cache,但我仍然不太了解缓存是如何失效的.我有一个单独的index.php来处理所有请求.缓存是否会存储每个请求的结果?如果我的一个包含(或缓存中的查询结果)发生变化,它会自动清除缓存吗?

APC不缓存输出.它缓存您编译的字节码.

从本质上讲,正常的PHP请求如下所示:

    PHP文件被解析并编译为字节码

    PHP解释器执行字节码

APC缓存第一步的结果,因此您不会一遍又一遍地重新编译/重新编译相同的代码.默认情况下,它仍然stat()是您的每个请求上的PHP文件,以查看文件是否已被编译,因为它的缓存副本已被编译 - 因此对代码的任何更改都将自动使缓存的副本无效.

您也可以像使用memcached一样使用APC来存储任意用户数据.但请记住:

    memcached服务器可以向多个服务器提供数据; APC中缓存的数据只能在本地使用.更好地从一个memcached盒子到四个服务器提供数据,而不是在每个服务器上的APC中拥有4个数据副本.

    根据我的经验,Memcached更好地处理大量并发写入单个缓存键.

    APC似乎没有很好地应对其缓存填满.碎片增加,性能下降.

另外,请注意:除非您设置了某种锁定机制,否则基于文件的缓存可能会因同时写入而损坏.如果您已实现锁定,则可能会成为其自身的瓶颈.IMO,并发性很棘手 - 让memcached/APC /数据库处理它.

推荐阅读
ifx0448363
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有