我目前正在为我们的网站使用 LAMP 堆栈(超过 Centos 6.5),并且我想尝试将 mySQL 与“Web 服务器”分开。
到目前为止,我一直在使用 DigitalOcean 的四核 CPU 和 8GB RAM 的 VPS。
昨天,我为单个登台环境(目前)创建了一个新的 DigitalOcean VPS,具有以下规格和实用程序:
- 2个CPU核心
- 2GB 内存
- Centos 6.7
- 带有“网络服务器”的专用网络(Ping 时间:
min/avg/max/mdev = 0.352/0.481/0.662/0.073 ms
- mySQL 5.6(与当前服务器上的相同)
- 相同的 my.cnf 配置有 2 处更改:
- 补充:(
bind-address=X.X.X.X
私网内网IP地址) - 将 innodb_buffer_pool_size 从 2GB 更改为 1GB(因为我们现在的 RAM 更少了..)
- 补充:(
Web 服务器运行 Drupal 站点,并安装了 APCu、opCACHE 和 memcached。
使用 Chrome 检查加载时间时,似乎该网站现在加载速度较慢,大约需要 0.5 - 1.5 秒。不幸的是,NewRelic 证明我是对的(见附件截图)
由于这是我第一次配置远程 mySQL 服务器,我想知道这是否是我错过的东西?任何可以提高性能的配置或调整?
我不知道您为什么会感到惊讶,因为您的 MySQL 服务器分配给它的 RAM 较少,并且将它放在不同的机器上会增加网络接口的负载。
您应该监控您的网络活动,看看它是否会导致任何类型的瓶颈。
根据您的 SQL 查询和 PHP 脚本,可能有一些方法可以在查询性能方面更好地优化这些任务,并改进发送回 PHP 的结果以减少网络负载。
我会推荐几件事:
验证网站是否使用 Memcached/APC/opcode 缓存。
我会推荐 Memcached 用于数据库查询缓存。使用mysqltuner.pl对 Mysql 配置进行一些调整
优化 memcached apc 配置
Memcached 配置文件在基于 Debian/Ubuntu 的操作系统中的位置:
基于 Centos/RHEL 的操作系统中的 Memcached 配置文件:
Apc 配置可以插入到 php.ini 中。
遵循这些步骤肯定会提高性能。
并使用 NewRelic APM 揭示有关时间花费的数据。
如果网络是一个问题,我想你无能为力。
让我知道。
谢谢,
沙赫里亚尔
我设法解决了这个问题,我认为我所经历的方式可能对其他人有所帮助。
ping
,mtr
并traceroute
找出问题是否与延迟有关top
(或htop
) 和free -m
SHOW PROFILE
iptraf
和我们的第 3 方监控服务),但还有一些其他选项,正如 @Julie Pelletier 所建议的那样使用远程 mySQL 服务器时的额外性能提升
使用 memcached、APCu 和 Opcode 缓存(尽管所有这些都已经安装在我们的案例中 - 它们是游戏规则的改变者......)
最后但并非最不重要 - 使用 SSH 隧道而不是直接连接到 mySQL 服务器(似乎它在整个页面加载时间上节省了大约 200 毫秒)
希望阅读此答案将为您节省超过 0.5 到 1.5 秒 :)