分类网站模版,erp系统教学,中国工程建筑门户网站官网,自己安装wordpresslinux是目前最常用的操作系统#xff0c;下面是一些常见的 Linux 系统调优技巧#xff0c;在进行系统调优时#xff0c;需要根据具体的系统负载和应用需求进行调整#xff0c;并进行充分的测试和监控#xff0c;以确保系统的稳定性和性能。同时#xff0c;调优过程中要谨… linux是目前最常用的操作系统下面是一些常见的 Linux 系统调优技巧在进行系统调优时需要根据具体的系统负载和应用需求进行调整并进行充分的测试和监控以确保系统的稳定性和性能。同时调优过程中要谨慎操作避免对系统造成不良影响。 其主要调优方向大概包含几个方面内存、CPU、i/o 网络调优以及安全性和资源限制。
一、内存调优
1、调整内核参数 vm.swappiness控制内核将内存页换出到交换空间的倾向。值越低系统越倾向于保留内存中的页减少对交换空间的使用。 默认情况下vm.swappiness设置为60在服务器上当内存使用率达到40%时就可能会使用交换空间。当你的服务器的RAM充足时这个值可以适当降低设置为10或更低以减少不必要的交换操作。 修改方法编辑/etc/sysctl.conf文件写入vm.swappiness10 运行命令sysctl -p使更改生效。 vm.vfs_cache_pressure调整内核回收用于目录和 inode 缓存的内存的倾向。较高的值会使内核更积极地回收缓存释放内存用于其他用途。默认值为 100可以根据系统负载和内存需求进行调整。
2、使用大页内存 大页内存可以减少页表的大小提高内存访问效率。对于内存密集型应用如数据库可以显著提高性能。 启用大页内存需要在系统启动时进行配置并在应用程序中进行相应的设置。
1在Linux系统中可以通过下面的命令来查看系统是否支持大页内存。
cat /proc/meminfo | grep Hugepagesize 如果输出了大页的大小信息则说明系统支持大页内存
2配置大页内存
临时配置
sysctl -w vm.nr_hugepagesnumber_of_hugepages 其中 number_of_hugepages 是要分配的大页数量例如大页大小设置为4096
永久配置
在 /etc/sysctl.conf 文件中添加以下参数
vm.nr_hugepagesnumber_of_hugepages
保存文件后使其生效
sysctl -p 二、CPU 调优
1、调整进程优先级 使用 nice 和 renice 命令可以调整进程的优先级。较低的优先级数值表示更高的优先级。 对于关键任务或对响应时间要求较高的进程可以提高其优先级确保它们获得更多的 CPU 时间。 优先级的值范围是 -20 到 19数值越小优先级越高。默认情况下进程以优先级 0 启动。
nice 基本语法
nice [-n adjustment] command [arguments]
以优先级 5 启动一个名为 test 的程序nice -n 5 test
renice 命令用于调整正在运行的进程的优先级。
基本语法
renice priority [-p] pid... 或 renice priority [-g] pgrp... 或 renice priority [-u] user...
其中priority 是要设置的新优先级pid 是进程 IDpgrp 是进程组 IDuser 是用户名。例如将进程 ID 为 1234 的进程优先级调整为 10renice 10 -p 1234。
注意只有 root 用户可以将进程优先级设置为负值以提高进程的优先级普通用户只能减低进程的优先级或者保持不变。
2、绑定 CPU 核心 通过 taskset 命令或在启动应用程序时指定 CPU 亲和性可以将特定的进程绑定到特定的 CPU 核心上。 这可以避免进程在不同的 CPU 核心之间频繁切换提高 CPU 缓存的命中率从而提高性能。
查询进程的CPU亲和性
taskset -p pid
pid 是进程的ID
设置进程的CPU亲和性
taskset -cp cpuset pid
cpuset 是一个用逗号分隔的CPU核心列表 pid 是进程的ID
例如将进程 ID 为 1234 的进程绑定到 CPU 核心 0 和 1 上运行taskset -cp 0,1 1234
启动新进程时设置CPU亲和性
taskset cpuset command [arguments]
cpuset 是一个用逗号分隔的 CPU 核心列表command 是要执行的命令arguments 是命令的参数。
例如启动一个名为 test 的程序并将其绑定到 CPU 核心 2 和 3 上运行taskset 2,3 test
三、磁盘 I/O 调优
1、使用 SSD 硬盘 SSD 硬盘具有更快的读写速度和更低的访问延迟可以显著提高系统的磁盘 I/O 性能。 如果可能可以将关键数据和频繁访问的文件存储在 SSD 上。
对于SSD存储通常推荐使用none或deadline调度器对于HDD则cfq或bfq可能更适合。检查当前使用的调度器
cat /sys/block/sda/queue/scheduler
更改调度器
echo deadline /sys/block/sda/queue/scheduler
禁用访问时间更新 在挂载选项中加入noatime以避免每次文件被读取时都更新访问时间戳这样可以减少不必要的磁盘I/O。 编辑/etc/fstab修改相关分区条目例如UUID... / ext4 defaults,noatime 0 1
2、调整文件系统参数 对于不同的文件系统可以调整一些参数来优化磁盘 I/O 性能。例如对于 ext4 文件系统可以调整 block size、inode size 等参数。
Ext 文件系统系列如 Ext4
在创建文件系统时可以使用特定的工具和选项来调整块大小和其他参数。例如使用 mkfs.ext4 命令时可以通过 -b 选项指定块大小如 -b 4096 设置块大小为 4KB。inode size 通常不是一个直接可配置的选项但可以通过调整文件系统的总体布局和存储策略来间接影响 inode 的使用和分配。
XFS 文件系统
使用 mkfs.xfs 命令创建文件系统时可以通过 -b size 选项设置块大小例如 -b size8192 设置块大小为 8KB。inode 大小通常是根据文件系统的创建参数和存储需求自动调整的一般情况下不太容易直接指定具体的 inode size。
3、使用磁盘缓存 Linux 系统的磁盘缓存可以提高磁盘 I/O 的性能。可以通过调整内核参数 vm.dirty_background_ratio 和 vm.dirty_ratio 来控制磁盘缓存的行为。 vm.dirty_background_ratio 表示当内存中的脏页达到系统内存的一定比例时内核开始将脏页异步写入磁盘。 vm.dirty_ratio 表示当内存中的脏页达到系统内存的更高比例时内核将阻塞所有的写操作直到脏页被写入磁盘。
临时调整
sysctl vm.dirty_background_ratio10
sysctl vm.dirty_ratio20
永久调整 编辑 /etc/sysctl.conf 文件添加下面设置
vm.dirty_background_ratio 10
vm.dirty_ratio 20
保存文件后使用 sudo sysctl -p 命令使更改生效。
四、网络调优
1、调整网络缓冲区大小
可以通过调整内核参数 net.core.rmem_max、net.core.wmem_max、net.ipv4.tcp_rmem 和 net.ipv4.tcp_wmem 来调整网络接收和发送缓冲区的大小。较大的缓冲区可以提高网络吞吐量但也可能会增加内存的使用。
net.core.rmem_max 定义了内核套接字接收缓冲区的最大大小。这个参数决定了系统在接收网络数据时可以使用的最大缓冲区空间。net.core.wmem_max 定义了内核套接字发送缓冲区的最大大小。它控制了系统在发送网络数据时可以使用的最大缓冲区空间。net.ipv4.tcp_rmem 这个参数是一个包含三个整数值的数组用于设置 TCP 接收缓冲区的最小、默认和最大大小。例如4096 87380 6291456表示最小接收缓冲区大小为 4096 字节默认大小为 87380 字节最大大小为 6291456 字节。net.ipv4.tcp_wmem 与net.ipv4.tcp_rmem类似也是一个包含三个整数值的数组用于设置 TCP 发送缓冲区的最小、默认和最大大小。
临时调整
sysctl -w net.core.rmem_maxvalue
sysctl -w net.core.wmem_maxvalue
sysctl -w net.ipv4.tcp_rmemmin,default,max
sysctl -w net.ipv4.tcp_wmemmin,default,max
永久调整
编辑 /etc/sysctl.conf 文件添加下面设置 net.core.rmem_maxvaluenet.core.wmem_maxvaluenet.ipv4.tcp_rmemmin,default,maxnet.ipv4.tcp_wmemmin,default,max
保存文件后使用sudo sysctl -p命令使更改生效。
2、启用网络流量控制 使用 tcTraffic Control工具可以对网络流量进行整形和控制。可以限制特定的网络接口或 IP 地址的带宽使用确保关键服务的网络带宽得到保障。
3、优化网络协议栈 对于特定的网络应用可以调整网络协议栈的参数来提高性能。例如对于 Web 服务器可以调整 tcp_tw_reuse 和 tcp_tw_recycle 等参数来优化 TCP 连接的回收和重用。
tcp_tw_reuse 这个参数允许在 TIME_WAIT 状态的连接被重新用于新的连接。当设置为 1 时内核会在安全的情况下例如连接的时间戳符合要求等将处于 TIME_WAIT 状态的连接重新分配给新的连接请求。 启用这个参数可以减少 TIME_WAIT 状态的连接数量从而节省系统资源特别是在高并发的服务器环境中。tcp_tw_recycle 这个参数开启快速回收 TIME_WAIT 状态的连接。当设置为 1 时内核会更快地回收 TIME_WAIT 状态的连接以减少连接资源的占用。 但是在一些网络环境中开启这个参数可能会导致连接问题特别是在网络地址转换NAT环境下可能会导致数据包丢失和连接失败。
临时调整
sysctl -w net.ipv4.tcp_tw_reuse1
sysctl -w net.ipv4.tcp_tw_recycle1
永久调整
编辑 /etc/sysctl.conf 文件添加下面设置
net.ipv4.tcp_tw_reuse1
net.ipv4.tcp_tw_recycle1
保存文件后使用sudo sysctl -p命令使更改生效。
五、安全性和资源限制 一般用在需要确保只有特定用户可以执行某些敏感操作同时控制每个用户的资源消耗。
1、使用ulimit限制资源 可以在用户的shell初始化脚本中设置ulimit指令例如限制打开文件数、进程数等。
在 /etc/security/limits.conf 中定义全局或用户特定的资源限制。
临时调整
ulimit -n 2048 永久调整
编辑 /etc/security/limits.conf 文件添加设置
/etc/security/limits.conf文件的每一行都包含四个字段分别是
domain指定限制的范围可以是用户名、用户组名或通配符*表示全局范围。type限制的类型可以是soft软限制、hard硬限制或-同时设置软限制和硬限制。item要限制的资源项例如nofile最大打开文件数、nproc最大进程数等。value资源限制的值。
例如以下行表示将用户myuser的最大打开文件数软限制设置为 1024硬限制设置为 2048
myuser soft nofile 1024
myuser hard nofile 2048
保存文件后通常需要用户重新登录才能生效。已经运行的进程这些限制不会立即生效。
2、利用cgroups管理资源
cgroupsControl Groups提供了一种机制来限制、记录和隔离进程组的资源使用情况。
创建cgroup目录结构并在其中设置相应的资源控制策略如CPU份额、内存上限等。
创建cgroup目录 可以在 /sys/fs/cgroup/ 目录下创建。例如创建一个名为 test 的 cgroup
mkdir /sys/fs/cgroup/mygroup
设置资源控制策略 CPU份额控制 CPU 份额表示在多个 cgroup 之间分配 CPU 资源的比例。 例如设置CPU 份额为512 相对权重
echo 512 /sys/fs/cgroup/mygroup/cpu.weight 内存上限控制 设置内存上限可以限制cgroup中进程使用的内存总量 例如设置内存上限为1GB
echo 1073741824 /sys/fs/cgroup/mygroup/memory.limit_in_bytes
将进程添加到cgroup 找到要添加到 cgroup 的进程 IDPID。可以使用命令如ps或top来查找进程 ID。
将进程添加到cgroup
echo pid /sys/fs/cgroup/mygroup/tasks
注意在操作cgroups 时可能需要使用管理员权限确保你有足够的权限来创建和修改 cgroup 目录及设置资源控制策略。