Pre-1.前言

最近看到一个说法,当网站被CC时,站库分离可以起到缓解的作用,那么我就来做一个测试

Pre-2.测试说明

本次测试通过阿里云PTS的RT 90%RT Avg两个指标来比较响应时间的差别,从而确定站库分离是否有用。

Pre-3.测试配置

  • PTS:30个并发用户,时长为3分钟
  • 站库不分离:1x1C2G20M
  • 站库分离:1x1C2G20M + 1x1C2G(MySql 5.7.20-18)

ps: 为了避免网络波动造成误差,PTS和主机都处于上海地域

Pre-4.环境配置

进行两组不同程序的测试,WordPress和Typecho,均不启用Cache

站库分离 站库不分离
Nginx 1.14.0 1.14.0
PHP 7.2.11 7.2.11
MySql 5.7 外部-5.7
OS CentOS 7.5 CentOS 7.5

测试结果

是否站库分离 程序 RT 90%(ms) RT Avg(ms) 错误率 CPU占用率 内存占用率
WordPress 1203 1149 0% 100% 30%
Typecho 321 308 0% 100% 27%
WordPress 941 973 0% 100% 22%
Typecho 255 225 0% 97% 21%

总结

  • 从结果来看,站库分离对于缓解压力有一定作用
  • 但是在30并发情况下,分离之后响应时间和系统负载的下降有限
  • 而且站库分离意味着成本的上升。相比之下还是启用缓存,优化代码带来的提升更明显
  • 在遭遇CC时,nginx直接限死单IP并发和全站并发,效果非常好(推荐:有攻击时单IP并发为10,全站并发为200)
  • 有条件的话,站库分离还是做一下比较好

PS:nginx的并发指的是并发的连接,PTS的并发指的是并发的页面打开

为保证良好的排版风格,请在搬运时使用 Markdown 版本,本文 Markdown 版本