首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >服务器性能调优

服务器性能调优
EN

Server Fault用户
提问于 2012-02-29 17:27:36
回答 1查看 902关注 0票数 0

我继承了系统,我需要从硬件的角度尽可能地调整性能。首先,我是一个web开发人员,而不是一个SysAdmin,我不想做任何过早的性能调优,所以在过去的几天里,我做了一些研究,也建立了服务器和应用程序监控,并编写了一个小的计划,如何可以改进,但我需要有经验的人SysAdmin审查这一点。

我们之所以这么做,是因为网站接缝速度慢,流量也在稳步增长。主要的计划是重写系统,因为许多糟糕的体系结构决策,比如数据库本身,并没有正确地标准化。因此,当重写正在进行时,我们想做一些“愚蠢的”/simple扩展(如果可能的话),只是为了让客户满意。

我们当前的系统

  • 操作系统: CentOS 5 64位(Linux2.6.18-238.12.1.el5)
  • 网络服务器: HP DL 320,Intel Xeon 4核L5520 @ 2.26GHz CPU,8GB RAM,2×500 GB SATA驱动器,RAID控制器,冗余PSU
  • MySQL 5.0
  • PHP 5.2.10
  • Apache2.2.3与php_mod

服务器监视结果

我们运行的是单一服务器,它承载web应用程序和数据库。

  • 每秒平均请求量~1.4,峰值~3 RPS
  • 磁盘I/O利用率,峰值25% (仅在运行一些后台任务时才达到此值),而不是2-5%。
  • 物理记忆,在峰值约70%使用。

MySQL配置

  • 我们目前正在使用InnoDB和MyISAM表的混合。
  • 查询缓存被关闭。
  • innodb_buffer_pool_size = 8M
  • innodb_flush_method =(空)
  • innodb_log_file_size = 5M
  • innodb_thread_concurrency =8

我不关心MyISAM参数,因为我计划将所有表转换为InnoDB,这样对我来说就更容易调优了。

我现在的计划

1.系统监视

保持系统监视的弱点,这样我们可以有一个更好的情况以后,如果性能调优已经成功。

2.分析应用程序监控

收集哪些页面加载时间最长的信息

3.使用清漆

据我所知,Varnish (粗略地说)缓存整个页面,并充当一个代理,它可以在不需要Apache参与的情况下为这些页面提供服务。在我们的例子中,我们有很多不经常更改的内容,尽管消耗了相当多的资源来生成。

4.使用自定义脚本

进行基准测试

编写模仿用户行为的自定义脚本,并尝试使用“贪婪”特性。当站点未被访问时,同时运行这些脚本,并收集系统的性能信息。在站点优化之前和之后执行此操作。虽然,这一点对我来说很有意义,但我以前还没有真正听说过做类似的事情,只是在Rails基准测试中看到了类似的想法,我希望避免过早地进行基准测试,所以我很高兴听到一些关于这方面的意见。

5.将所有表转换为InnoDB

这将使所有的调优过程变得更简单。

6.数据库层调优

  • 打开查询缓存并将其设置为256 on,而不是经常使用以下等式测量缓存性能:Qcache_hits / Qcache_inserts x 100 = Your Query Cache's effectiveness.
  • query_cache_limit =256 K
  • 创建一个每小时运行两次并执行的cron作业:FLUSH QUERY CACHE;
  • 我们使用狮身人面像,所以对于它的选择查询,我也将添加SQL_NO_CACHE,尽管query_cache_limit应该防止狮身人面像破坏缓存。

7.物理内存调优

这有点棘手,因为我们只有大约3GB的额外内存可以分配给MySQL。在我们的例子中,Innodb TableSpaces的总大小大约是3GB。以下文章:选择innodb_缓冲器_池子_大小建议将innodb_buffer_pool_size设置为比InnoDB TableSpaces的总大小多10%,在我们的例子中,这将是3.1GB,因此我们没有足够的内存。但是,向服务器添加更多的物理内存并不是一个问题。

除了innodb_buffer_pool_size调优之外,还应进行以下MySQL参数更改:

  • innodb_flush_method = O_DIRECT (避免双重缓冲)
  • innodb_log_file_size = 256M

8.页面生成时间调优

我遇到的大多数博客都建议使用Nginx和APC (PHP缓存)。我已经看到了基准测试的结果,与启用mod_php的Apache相比,它们似乎都令人印象深刻。但是,在我们的例子中值得注意的是,我们在高峰时间提供3 3RPS服务。用Nginx改变Apache并不是一个容易的过程,坦率地说,如果需要的话,我更希望有一个经验丰富的SysAdmin来做这件事。如果在我们的情况下,迁移服务器是值得的,也许有人可以给出建议吗?

考虑到我的情况,有人能给我关于这个计划的任何反馈吗?

谢谢!

EN

回答 1

Server Fault用户

回答已采纳

发布于 2012-02-29 17:57:49

你的总体计划是合理的。在接触任何东西之前,先进行系统监控和页面速度分析。只有知道问题在哪里,你才能解决问题。

一旦您知道瓶颈是什么(磁盘、CPU、RAM、数据库、WebApp),您就可以按照它们对用户的影响顺序开始针对它们。

在调优方面,您遗漏的一个特定项是数据库分析(EXPLAIN用于查询和创建/修改索引以提高性能)。这是一个有经验的DBA的工作--创建太多的索引会阻塞插入,而创建错误的索引无助于性能。

您还应该认真考虑将数据库服务器和web/应用程序服务器分开:两者都有相当困难的任务,将它们分开将避免重载一个主机。

如上文所述,如果我执行你的计划,我将按以下方式进行:

  1. 监控和度量-识别问题(S)
  2. 问题分析-数据库分析等。
  3. 将表转换为InnoDB (并重复1和2)
  4. 页面生成时间优化(并重复1和2)
  5. 物理内存调优和附加数据库层Tuning (在绝对必要之前,我不会调整这些设置,我将首先与有经验的DBA协商)
  6. 缓存(清漆或等效)。

我不会使用自定义脚本进行基准测试,除非您在生产中有一个开发环境或维护窗口(您不想用测试负载来削弱您的生产环境)。

票数 2
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/364966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档