服务器性能调优

news/2025/3/18 1:57:35/

硬件

如果是硬件瓶颈就换硬件 (包括CPU、内存、网卡、硬盘)

软件

(软件,特指我们写代码的那部分程序)

建议先 top 看下软件瓶颈在哪,CPU、内存、网络(netstat),哪个进程占用比较高

还有硬盘I/O等,一般情况比较少

(有时候可能不是自己代码的问题,也可能是第三方库的问题,需要注意)

CPU

是bug

比如,CPU异常 100%,C程序需要拿 gdb、pstack 工具去调试看看是不是死循环了

不是bug

看看需不需要分散CPU压力,多线程或者是集群分布式分担压力,参考方案优化

内存

是bug

比如内存泄漏,C代码用 valgrind 排查泄漏点

不是bug

比如有些数组申请过长(比如1000),看下是不是能改个800,做一些代码层的优化(这种不属于内存泄漏),可能还需要配合打印日志,比如某个阶段占用的内存

还有就是参考方案优化

网络

可以先 netstat 看下发送或者接收队列有没有堆积,此外还可以结合抓包定位问题

内部问题

如果是服务器侧问题(是不是我们代码处理并发不太合理),考虑I/O多路复用等

外部问题

和我们对接的客户端流量过高,要不要限制客户端流量,方案是否能做优化(或者分布式分散压力)

中间件

还有一些性能问题可能不是在我们写的程序里面,可能在mysql、redis等中间件里,一般是两种情况,中间件一般都带有自己的调试日志,比如mysql就可以打印慢查询的sql语句,我们可以结合日志和我们代码一起分析

中间件返回时间过长

这个需要结合代码和中间件日志分析,这个比较影响 tps

比如mysql是不是发送慢查询、redis是不是有大key存在

中间件CPU、内存占用过高

这个需要结合代码和中间件日志分析,这个比较影响服务器整体性能

看下是不是我们代码导致的上诉问题,如果不是的话,就是业务量实在太大,可以考虑优化方案

方案设计

如果软件硬件都优化到瓶颈了,看看是不是方案问题,比如说考虑架构上考虑分布式,通过分布式思想来分散CPU、内存、网络压力,把单一压力打散到各个点上;比如程序上是否可以考虑多进程,多线程方式,反正就是分散压力;中间件也考虑分布式来分散压力


http://www.ppmy.cn/news/58075.html

相关文章

DAY 50 LVS负载均衡器 NAT模式

群集概述 群集的含义 Cluster,集群、群集由多台主机构成,但对外只表现为一一个整体,只提供一-个访问入口(域名或IP地址), 相当于一台大型计算机。 为什么使用群集 互联网应用中,随着站点对硬件性能、响应速度、服务…

高性能定时器--时间轮/多级时间轮

运行原理 指针指向轮子上的一个槽,轮子以恒定的速度顺时针转动,每转动一步就指向下一个槽(虚线指针指向的槽),每次转动称为一个tick,一个tick的时间称为时间轮的槽间隔slot interval,即心搏时间…

1. 安装Open vSwitch环境

1. 安装Open vSwitch环境 1 配置基础环境。 在VMware Workstation软件中创建一个虚拟机VM1,配置2张网卡,虚拟机VM1配置如图4-3所示。将网卡ens33地址配置为192.168.1.131/24,网卡ens34地址配置为192.168.2.131/24。 图4-3 VM1虚拟机配置 2…

代码随想录 452 最小数量弓箭引爆气球 453 无重叠区间 763 划分字母区间

452 最小数量弓箭引爆气球 代码如下 func findMinArrowShots(points [][]int) int { if len(points) 0 { //如果气球数量为0 则返回0 return 0 } res : 1 定义弓箭数量 sort.Slice(points,func(i,j int)bool{ //按照气球的左边界大小排序 return points[i][0] < poin…

c++ 11标准模板(STL) std::vector (三)

定义于头文件 <vector> template< class T, class Allocator std::allocator<T> > class vector;(1)namespace pmr { template <class T> using vector std::vector<T, std::pmr::polymorphic_allocator<T>>; }(2)(C17…

CSS布局基础(字体,文本,背景)

字体 常见字体设置 body {font-family: font-family: "Microsoft YaHei", Tahoma, Arial, Hiragino Sans GB,sans-serif; }浏览器从前到后匹配&#xff0c;找到可用字体结束&#xff0c;都没匹配上&#xff0c;使用浏览器默认字体 常用字号 不同浏览器默认字号可…

【6. 激光雷达接入ROS】

欢迎大家阅读2345VOR的博客【6. 激光雷达接入ROS】&#x1f973;&#x1f973;&#x1f973; 2345VOR鹏鹏主页&#xff1a; 已获得CSDN《嵌入式领域优质创作者》称号&#x1f47b;&#x1f47b;&#x1f47b;&#xff0c;座右铭&#xff1a;脚踏实地&#xff0c;仰望星空&#…

维度表设计方法

第一步&#xff1a;选择维度或新建维度。作为维度建模的核心&#xff0c;在企业级数 据仓库中必须保证维度的唯一性。以淘宝商品维度为例&#xff0c;有且只允许有 一个维度定义。 第二步&#xff1a;确定主维表。此处的主维表一般是 ODS 表&#xff0c;直接与业务 系统同步。以…