一、通常服务器的性能会卡在三个地方:

  • cpu

  • 网络 IO

  • 磁盘 IO

二、在优化性能的时候,首先要判断性能的瓶颈在上述的哪个地方。然后对症下药,按照下面的方法来优化:

1、提高 CPU 性能的方法

  • 并发。利用多线程、进程。老的线程库效率太低,需要升级用 nptl 。进(线)程数不要大于 cpu 个数 (请参考:http://www.ibm.com/developerworks/cn/linux/l-threading.html)

  • 谨慎用锁。改善架构,尽量不用锁。

  • 慎用字符串操作,比如 sprintf,snprintf,因为 %d %s 等等都需要 CPU 资源去做词法分析,数量多的话,也是不菲的开销

  • 减少系统调用,例如 time,主要消耗在用户态和内核态之间的切换。

  • 减少遍历操作。

  • 把握真实需求,简化实现方案

  • 优化架构,字符串协议解包很耗 cpu,考虑单独一个线程

    一个好的架构,服务器的 CPU 总消耗总是平均的分布在各个 cpu 上,CPU 的消耗在 70% 左右

2、提高网络 IO 的方法

  • 使用 epoll 代替 select

  • 使用非阻塞的模式来开发

3、提高磁盘 IO 的方法

【详细请参看另一篇博文:linux 下提高磁盘 IO 的方法】

  • Linux 可以利用空闲内存作文件系统访问的 cache,因此系统内存越大存储系统的性能也越好

  • 利用顺序写,减少寻道次数

  • Cache 策略,充分利用 cpu 和内存的资源来缓解磁盘读写压力

三、如何来寻找系统的瓶颈呢?可以利用下面的工具:

1、top

可以查看系统中运行的进程的状况,CPU 使用状况,系统负载,内存使用等。它是检查系统进程运行状况最方便的工具了,它默认显示部分活动的进程,并且按照进程使用 CPU 的多少排序。它可以显示全部 CPU 的使用状况,也可以显示每个进程都运行在那个 CPU 上面。

主要可以用 top 来看哪些进程或者那类进程占用 CPU 和内存资源最多,以此迅速定位存在性能问题的进程,以及运行异常的进程

2、free

free 命令显示系统内存的使用状况(物理内存和交换内存)通过这个命令我们可以看到系统进程实际使用的物理内存,buffer 和 cache 使用的物理内存

3、vmstat

vmstat 是一个很全面的性能分析工具,可以观察到系统的进程状态、内存使用、虚拟内存使用、磁盘的 IO、中断、上下问切换、CPU 使用等。

  • Procs

r: 运行的和等待 (CPU 时间片) 运行的进程数,这个值也可以判断是否需要增加 CPU(长期大于 1)

b: 处于不可中断状态的进程数,常见的情况是由 IO 引起的

  • Memory 类似 free 命令

  • Swap

si: 交换内存使用,由磁盘调入内存

so: 交换内存使用,由内存调入磁盘

内存够用的时候,这 2 个值都是 0,如果这 2 个值长期大于 0 时,系统性能会受到影响。磁盘 IO 和 CPU 资源都会被消耗。

  • IO

bi: 从块设备读入的数据总量 (读磁盘) (KB/s),

bo: 写入到块设备的数据总理 (写磁盘) (KB/s)

随机磁盘读写的时候,这 2 个 值越大,能看到 CPU 在 IO 等待的值也会越大

  • System

in: 每秒产生的中断次数

cs: 每秒产生的上下文切换次数

上面这 2 个值越大,会看到由内核消耗的 CPU 时间会越多

  • CPU

us: 用户进程消耗的 CPU 时间百分比

us 的值比较高时,说明用户进程消耗的 CPU 时间多

sy: 内核进程消耗的 CPU 时间百分比

sy 的值高时,说明系统内核消耗的 CPU 资源多,这并不是良性的表现,我们应该检查原因。

wa: IO 等待消耗的 CPU 时间百分比

wa 的值高时,说明 IO 等待比较严重,这可能是由于磁盘大量作随机访问造成,也有可能是磁盘的带宽出现瓶颈 (块操作)。

id: CPU 处在空闲状态时间百分比

4、Strace

可以用来查看一个进程在执行过程中的系统调用和所接收的信号。

5、tcpdump

linux 下的抓包工具。可以把抓下来的信息重定向到文件里。然后在 windows 下用 ethereal 来分析。很强大

6、gprof

  • 程序中每个函数的 CPU 使用时间。

  • 每个函数的调用次数。并提供简单调用关系图。

使用步骤:

  • 用 gcc 或 g++ 编译程序时,使用 - pg 参数

  • 执行编译得到的运行程序,会产生一个 gmon.out 文件

  • 使用 gprof 命令。查看结果信息。(gprof -b proc_name gmon.out | less)

出处:如何优化服务器的性能

如何优化服务器的性能相关推荐

  1. 基于linux服务器的性能分析与优化

    基于linux服务器的性能分析与优化 方面:硬件系统软件网络 现象:系统不稳定相应速度慢 web无法打开打开速度慢 方案:硬件故障更换硬件或升级硬件 系统问题修改系统参数和配置 软件问题修改和升级软件 ...

  2. 服务器性能优化之网络性能优化

    hi ,大家好,今天分享一篇后台服务器性能优化之网络性能优化,希望大家对Linux网络有更深的理解. 曾几何时,一切都是那么简单.网卡很慢,只有一个队列.当数据包到达时,网卡通过DMA复制数据包并发送 ...

  3. 吃鸡服务器不接受响应,绝地求生:蓝洞优化服务器性能,从此告别掉帧延迟!...

    原标题:绝地求生:蓝洞优化服务器性能,从此告别掉帧延迟! 很多玩家们都非常了解服务器的重要性,服务器响应时间也可以描述为'网络延迟'.如果服务器的响应时间减少(或者网络延迟减少) 的话,玩家们可以体验 ...

  4. 服务器性能优化和Mysql性能优化

    服务器性能优化和Mysql性能优化 影响性能的几个因素 服务器硬件 CPU 内存 IO子系统 服务器系统 CentOS系统参数优化 sysctlconf 优化 limitconf参数优化 磁盘调度策略 ...

  5. 教你怎样来优化Apache服务器的性能

    测试和提高性能 Apache 服务器 已经被设计得尽可能的快,即使你用一台配置不高的机器,用不着进行太复杂的设置,它的响应内容就足以塞满以前的各种窄带连接但随网站WebSite内容日益复杂和带宽的增加 ...

  6. 怎样优化Apache服务器的性能

    通过挤出Apache服务器的每一分潜力你可以让你的网站留给别人的印象大大改观,特别是对一些动态网站更是如何.这篇文章主要涉及到对Apache服务器的安装和设置如何进行优化,这也是你最有控制权的部分. ...

  7. 绝地求生优化服务器什么意思,绝地求生:蓝洞优化服务器性能,从此告别掉帧延迟!...

    原标题:绝地求生:蓝洞优化服务器性能,从此告别掉帧延迟! 很多玩家们都非常了解服务器的重要性,服务器响应时间也可以描述为'网络延迟'.如果服务器的响应时间减少(或者网络延迟减少) 的话,玩家们可以体验 ...

  8. java gc的工作原理、如何优化GC的性能、如何和GC进行有效的交互

    java gc的工作原理.如何优化GC的性能.如何和GC进行有效的交互 一个优秀的Java 程序员必须了解GC 的工作原理.如何优化GC的性能.如何和GC进行有效的交互,因为有一些应用程序对性能要求较 ...

  9. 服务器怎么查看性能,查看服务器进程性能查看

    查看服务器进程性能查看 内容精选 换一换 分析辅助软件是一款支持部署到多台服务器目标环境上,实现对整个业务集群的数据采集和优化的组件.已成功登录Java性能分析.待安装分析辅助软件的服务器已开启ssh ...

最新文章

  1. 电脑中所有exe文件无法运行解决方案
  2. Maven项目下update maven后Eclipse报错:java.lang.ClassNotFoundException: org.springfra
  3. python自动化测试框架pytest.pdf_Python自动化测试框架
  4. 【Linux 内核】CFS 调度器 ⑥ ( CFS 调度器就绪队列 cfs_rq | Linux 内核调度实体 sched_entity | “ 红黑树 “ 数据结构 rb_root_cached )
  5. superset可视化-Time-series Percent Change
  6. python列表生成器语法_python语法_列表生成器_生成器_迭代器_异常捕获
  7. [Java] 实现多线程的两种方法
  8. Dapper源码学习和源码修改
  9. Android PreferenceActivity 使用
  10. 电机编码器调零步骤_蒂森电梯编码器整定和主机整定大全
  11. Know more about Oracle Latches
  12. 微信开发值得推荐的开源项目
  13. 删除单链表中指针q指向的结点
  14. InputMethodManager内存泄漏的原因及解决方案
  15. Pytorch总结十五之优化算法:AdaGrad、RMSProp、AdaDelta、Adam算法详解
  16. 密度聚类之DBSCAN聚类算法
  17. 计算机c盘装什么,电脑只有一个C盘!怎么为电脑重装系统?
  18. SaaSpace:2022年4款最好的免费3D打印软件
  19. R语言使用aov函数建立单因素方差分析模型、使用TukeyHSD函数采用Tukey法对各组均值的差异进行成对检验、使用plot函数可视化TukeyHSD函数的事后分析的结果、并获得的95%置信区间
  20. ES3,ES5,ES6的区别

热门文章

  1. 全国省市拼音简称、全称,数据库
  2. python读excel并写入_python3 循环读取excel文件并写入json操作
  3. C# 防止界面假死 多线程进度条的合理使用
  4. 死囚犯枪决问题——python实现
  5. 截污弃流过滤一体化设备 截污弃流过滤装置 成品截污弃流井
  6. 干Java开发快30岁了,没有核心竞争力,该怎么跳槽面试?
  7. IEEE论文提交过程中的Errors: Font Helvetica is not embedded
  8. 英语四级真题作文 计算机,2015年6月英语四级作文真题及范文:人与电脑
  9. 使用百度云AI实现刷脸登录
  10. 哈工大C语言设计精髓-存款利率计算器V1.0