基本上我想知道是否可以加快我的服务器速度通过使用像 squid 这样的缓存,检查配置中可能的错误,优化各种服务器软件参数等。
如果我知道服务器的 ping 时间和时钟速度以及其他硬件参数,是否有可能预测提供 1MB 数据的时间。
例如,在我的情况下,我有 1GHz AMD,ping 时间为 75ms,我在 0.6 秒内从核心内存获得了 16 kB 页面 - 我可以让它更快吗?-只是显示页面的简单时间无负载时。
是否存在用于此目的的基准/工具?
编辑我尝试添加 squid,但性能并未得到任何提升。
谢谢。
答案1
当您处理网络时,通常重要的不是单个请求的速度,因为它不是服务器在负载下如何运行的实际指标。
你真正想知道的是您的服务器是否能够足够快地提供页面,以便用户在预期的负载条件下获得良好的体验。
要回答这个问题,你应该得到一个这样的工具西卡特或者JMeter并模拟服务器的负载,然后寻找瓶颈发生的位置(如果有的话)。
例如,通过查看您的 Google Analytics 或统计信息帐户,您知道一天中最多有 500 名用户。然后您决定要支持每天大约 750 名用户的峰值。如果您细分一下(取决于您的网站是 24x7 还是 9x5),您可能会发现您需要支持的最大同时页面请求数大约是 10。
然后使用 WCAT 或 Jmeter 运行测试,让 10 位用户同时使用该网站并执行各种操作。如果响应时间可以接受(您可以判断,但我认为页面加载时间少于 2 秒),那么您可以就此停止或继续添加用户,以查看性能在什么时候下降。
一旦你看到性能下降,你就可以关联下降您的服务器当时的情况如何。您是否遇到大量硬页面错误?CPU 使用率是否很高?您的数据库是否不堪重负?
一旦发现瓶颈(如果有的话),就可以寻找减少瓶颈的方法。例如,如果您遇到硬页面错误和磁盘抖动,也许缓存是可行的方法。
但这一切都是为了了解您需要达到哪些指标、针对这些指标进行测试以及发现和解决瓶颈。
答案2
这里有很多概念。CPU 处理能力、内存、缓存、反向代理服务器和网络带宽都是影响最终性能好坏的独立因素。
单纯从网络层面来看,现代 PC 或服务器可以在几毫秒内处理成千上万个请求。但这是在你添加一个“执行任务”的应用程序之前。这个等式中产生最大差异的部分是:
- 应用程序(代码)
- 数据/存储(SQL 等)
- 网络吞吐量/带宽
因此,如果 1 和 2 已经很棒了,并且你的页面实际上生成并提供服务很快,那么 3 可能就是最大的瓶颈。如果 2 很糟糕,那么 1 也会很糟糕,即使 3 很棒。如果 1 是瓶颈,那么你无法对 2 或 3 进行任何优化来产生影响。