12.1 简介
我们可以通过关闭无用的服务、调整内核参数或是添加新的硬件来改善系统性能。
12.2 识别服务
Linux系统可以同时运行数百个任务,其中可能也会有那么一两个你不需要的守护进程。
有三种可以用于启动守护进程和服务的工具,Linux发行版支持其中任意一种。传统的SysV系统使用/etc/init.d中的脚本。较新的systemd守护进程除了使用/etc/init.d之外,还用到了systemctl调用。还有些发行版使用的是upstart,配置脚本保存在/etc/init中。
在上面的例子中,系统显然使用的是systemd;但是在有些发行版中ps命令输出的总是/sbin/init
ps和grep命令可以给出更多地线索:
如果命令返回upstart或者systemd,则表明系统运行的是upstart或者systemd。如果找不到匹配的内容,说明系统可能运行的是sysvmit。
可以使用grep命令筛选输出,只显示处于运行状态的服务
禁用无用服务的方法不止一种,这取决于你使用的系统是基于Debain还是Redhat,运行的是SysVinit、systemd还是upstart。不管使用哪种方法,必须要有root权限。
12.3 使用ss收集套接字数据
每一次HTTP访问、每一个SSH会话都会打开一个tcp套接字连接。选项-t可以输出TCP连接的状态:
ss的选项-l可以列出处于listen模式的套接字;选项-u指定只输出UDP套接字;选项-t指定只输出TCP套接字
12.4 使用dstat收集系统I/O使用情况
如果不适用任何选项,dstat会每隔疫苗显示出CPU占用、磁盘I/O、网络I/O、分页、中断以及上下文切换信息
--top-bio:显示出执行块IO最多的进程
--top-cpu:显示出CPU占用率最高的进程
--top-bio:显示出执行IO操作最多的进程,通常是网络IO
--top-latency:显示出延迟最高的进程
--top-mem:显示出占用内存最多的进程
12.5 使用pidstat找出资源占用大户
-r:输出缺页故障和内存使用情况
-u:输出CPU使用情况
-w:输出切换任务情况
12.6 使用sysctl调优Linux内核
Linux内核中包含了大约1000个可调节的参数。
12.8 使用nice命令更改调度器优先级
Linux中的每个任务都有优先级。这个优先级的范围从-20到19,优先级越低,分配给任务的CPU时间就越多。默认的优先级是0.
nice命令可以修改任务的优先级,它能以指定的优先级启动任务。降低任务的优先级会释放出资源给其他任务。
- 网络调优
- sysctl支持的选项
- -d:输出IO统计
- pidstat能够输出每个进程的统计信息
- 安装
- dstat可以按照类别找出占用资源最多的进程
- dstat能够以固定的时间间隔显示出磁盘、网络、内存使用以及所运行任务的相关信息。
- 跟踪侦听端口的应用程序
- 显示tcp套接字状态
- 基于Debain的系统
- 基于Redhat的系统
- 基于systemd的系统
- 你应该把不必要的服务都禁止掉,这样可以降低系统负载,提高安全性。
- 选项--status-all可以输出/etc/init.d中所定义的全部服务的当前状态
- 确定系统使用的是SysVinit、systemd还是upstart