硬件需求
下表是官方Wiki给出的硬件需求。
Your Needs | Our Recommend | |||||
Ticket created per month | Console Users | CMDB: CIs | Servers | CPU | Memory | Disk for MySQL |
< 200 | < 20 | < 50k | An all in one server | 2vCPU | 4Gb | 10Gb |
< 5000 | < 50 | < 200k | Two servers: Web + MySQL | 4vCPU | 8Gb | 20Gb |
> 5000 | > 50 | > 200k | Two servers: Web + MySQL | 8vCPU | 16Gb | 50Gb |
压测配置
- 8核16G 虚拟机,CPU为 Intel Xeon E5-2699 v4 @ 2.20GHz
- PHP/7.3.20, Tengine/2.3.2, MySQL/5.7.31 部署在同一台机器上
- iTop/2.7.1-5896
- opcache-7.3.20, apcu-5.1.17
压测方法
计划随机读写 Server 对象来测试。首先需要写一个代理接口,用来生成随机的 Server 序列号和主机名,然后使用 ab 压测此代理接口。
结果
模式 | 并发 | 吞吐(rps) | 响应时间(ms) | %user | %iowait | Load1 |
写入 | 5 | 25 | 200 | 62% | 0% | 5.5 |
写入 | 7 | 33 | 205 | 85% | 0% | 9 |
写入 | 10 | 40 | 260 | 95% | 0% | 15 |
读取 | 10 | 45 | 233 | 96% | 0% | 15 |
读取 | 7 | 38 | 180 | 86% | 0% | 9 |
读取 | 5 | 28 | 182 | 63% | 0% | 6.1 |
读取 | 15 | 45 | 323 | 97% | 0% | 20 |
压测结果并不理想。一部分原因是因为机器配置不太好,并且PHP和MySQL没有分离。另外 iTop 定位是 IT 管理软件,主要用户是人,高并发读写确实不是其强项。而且 iTop 中存储的数据绝大部分是很少变动的,如果真有高并发的读取需求,可以考虑做一层有缓存的代理,并实现缓存刷新接口,通过计划任务查询 CMDBChangeOp 对象来刷新缓存。
参考资料
1. https://www.itophub.io/wiki/page?id=2_7_0%3Ainstall%3Ainstalling_itop
发表回复