我有这个专用服务器:
AMD Opteron 1218 HE 双核 (2 x 2,6GHz)
4 转 RAM
2 x 400 Go 软件 RAID
我在这个服务器上有一个流量很低的网站,每天只有 150< 。
另一款 Facebook 应用流量较大,日均 UV 量达 50,000+。
我的 Facebook 应用程序有:1 个 SWF 文件、一些带有一些数组函数的 php 文件以及 MySQL 查询,我开始接收:来自 MySQL 的连接太多,我已修复此问题,我想知道对于这种流量,最好的 Apache、PHP、MySQL 配置是什么?
新的问题是 Fb 应用程序页面有时无法加载。
顺便说一句,我正在使用 Centos 5、Plesk 9.0.1、PHP+MySQL 5。
提前致谢。
答案1
您的数据库模式不是最佳的怎么办?对于这样的机器来说,即使 60k UV 也不多……
我会做的是:
- 确保我没有使用 mysql_pconnect()
- 当我不再需要 mysql 连接时,明确关闭它们
- 确保我的查询高效运行(使用索引等......)
- 使用 connect_timeout 指令在 my.cnf 中设置较低的空闲超时
另外,您提到了 RAID,是 RAID 1 吗?最后,也可能是最糟糕的,您可以增加 my.cnf 中的 max_connections 指令
答案2
这并不完全是对你问题的回答,但为了实现高可扩展性,我会使用nginx而不是使用 Apache 作为 http 服务器。
我使用 Apache 服务器时,响应时间非常长:迁移到 nginx 解决了这个问题。
答案3
你可以做一个专门的服务器来提供静态文件,这个服务器必须配置较长时间的缓存。
答案4
确保已安装 sysstat,以便跟踪硬件指标。我总是首先查找硬件限制,尤其是磁盘 IO 和 RAM 耗尽。
在此之后,确保您已正确配置 mysql 慢速查询日志和 apache 错误日志。
当页面无法加载时,您需要做什么才能使其再次加载?
我使用的另一种技术是创建一组页面:
只需输入“hello world”
PHP 信息页面
带有连接数据库的 PHP 页面,包含定时功能。
带有连接数据库并进行简单查询的 PHP 页面。
通过在事件发生时轮询这些页面,我发现您可以快速找到问题发生的位置。能够排除 PHP、MySQL 并只关注 Apache 非常有用。如果 PHP 信息页面速度很快,但您的页面却无法访问,则可能是数据库或 Web 编程问题。
我做了很多性能调整,我发现通过采取小步骤就可以开始解决问题。
另外,您可能还想安装一些服务器监控工具。我最近发布了一篇关于服务器监控的博客,但不记得是否可以在这里链接它?