성능 튜닝은 항상 운영 및 유지 관리 엔지니어에게 가장 중요한 작업 중 하나였습니다. 프로덕션 환경에서 시스템 응답 속도가 느리거나 하드 디스크 IO 처리량이 비정상적이거나 데이터 처리 속도가 예상보다 낮거나 CPU, 메모리가 부족한 경우 , 하드 디스크, 네트워크 및 기타 시스템 리소스가 오랫동안 고갈되었습니다. 그렇다면 이 문서가 정말 도움이 될 것입니다. 그렇지 않은 경우 먼저 저장하십시오.
1, hdparm 경도 확인 읽기 속도:
으아아아2, iostat는 디스크 IO 상태를 감지합니다:
으아아아“
blk_read/s 초당 읽은 데이터 블록 수
blk_wrtn/s 초당 작성된 데이터 블록 수
blk_read는 읽은 모든 데이터 블록의 수를 나타냅니다
blk_wrtn은 기록된 모든 데이터 블록의 수를 나타냅니다
”
3, vmstat는 메모리 및 CPU 상태를 보고합니다.
名称:报告虚拟内存的统计信息 格式:vmstat [-n] [延时[次数]]
R: | 运行和等待CPU时间片的进程数。오랫동안 CPU보다 숫자가 크다면 CPU가 부족하다는 뜻입니다 |
---|---|
B: | 리소스를 기다리는 프로세스 수가 많으면 I/O 또는 메모리 문제일 수 있습니다. |
메모리 스왑 영역의 메모리 크기로 전환[KB] | |
현재 사용 가능한 물리적 메모리의 양[KB] | |
디스크에서 메모리로 전송 | |
메모리에서 디스크로 전송 | |
블록 장치에서 읽은 데이터의 총량 | |
블록 장치에 기록된 총 데이터 양 | |
1000 1000을 초과하면 하드디스크의 읽기, 쓰기 속도에 문제가 있다는 뜻입니다 | |
특정 시간 간격 내에서 관찰된 초당 장치 인터럽트 수 [너무 많은 인터럽트는 성능에 좋지 않음] | |
열은 초당 생성된 컨텍스트 전환 수를 나타냅니다. | |
CPU 리소스가 부족함을 나타냅니다 | |
사용자 프로세스에서 소비한 CPU 시간의 비율 | |
커널 프로세스에서 소비하는 CPU 시간의 비율 | |
id: | CPU가 유휴 상태인 시간의 비율 |
와: | IO를 기다리는 데 소요된 시간의 비율 |
runq-sz: | 메모리에서 실행할 수 있는 프로세스 수 |
plist-sz: | 시스템의 활성 작업 수 |
显示详细信息
4,sar检测CPU资源:
任务计划 /etc/cron.d/sysstat 日志目录 /var/log/sa 查看方法 Sar –q –f /var/log/sa/sa10
5,lscpu显示CPU信息:
dmesg 显示出开机启动的信息 lscpu 显示CPU信息 lscpu -p 显示CPU对应的节点数 getconf LONG_BIT 获知主机的位数 getconf -a 查看全部的参数 /sys/class/dmi/id 可以查看Bios的信息 bios_*
6,strace显示程序的调用:
strace –fc elinks –dump http://localhost
7,调优硬盘优先写入/读取数据用:
“
预先读取需要写入的量,然后再处理写请求,↑读到的值将会是设置值的一半↑。
设置读取到缓存中的数值越大.写入时就会因为数据量大而速度变慢。/sys/block/sda/queue/nr_requests 队列长度越大,硬盘IO速度会提升,但占用内存
/sys/block/sda/queue/scheduler 调度算法Noop、anticipatory、deadline、[cfq]”
8,将Ext3文件系统的日志功能独立:
“
1、创建200M的/dev/sdb1 格式化为ext3 2、dumpe2fs /dev/sdb1查看文件系统功能中包含的has_journal 3、Tune2fs –O ^has_journal /dev/sdb1 去掉默认原有的日志功能 4、再分一个200M的分区./dev/sdb2. 日志卷的block必须等于 /dev/sdb1 Mke2fs –O journal_dev –b 1024 /dev/sdb2 5、将/dev/sdb2作为/dev/sdb1的日志卷. Tune2fs –j –J device=/dev/sdb2 /dev/sdb1로그인 후 복사”
9,关闭记录文件系统atime:
对于网站文件,频繁的修改atime是没有意义的,会影响性能 mount –o remount,noatime DEVICE 即可
10、修改文件日志的提交时间:
默认是5秒提交一次日志,修改更长时间可以提高性能,但容易丢失数据。 mount –o remount,commit=15 DEVICE
11,RAID轮循写入调优,适用于0/5/6:
“
chunk size.轮循一次写入的字节.默认是64K,只要没有写满,就不会移动到下一个设备
设置在每个硬盘都只写一个文件就切换到下一块硬盘,那么如果都是1K的小文件,就会将系统资源浪费在切换硬盘上
如果将chunk size的值设置很大,比如100M,那么也就没有了意义,还不如用一块硬盘。
Stripe size.条带大小,并不是有数据就写入,而是设置每次写入的数据量,一般是16K写一次。
所以.Chunk size(64K)/stripe size(16K),也就是说每块硬盘写四次。
————————————算当前应该把chunk size调成多少————————————
使用iostat –x查看自开机以来每秒的平均请求数avgrq-sz
chunk size = 每秒请求数*512/1024/磁盘数,取一个最紧接2倍数的整数
stride = chunk size /block(默认是4k)创建raid并设置chunk sinze
mdadm –C /dev/md0 –l 0 –n3 –chunk=8 /dev/sdb[123] 修改raid
mke2fs –j –b 4096 –E stride=2 /dev/md0”
12,硬盘的block保留数:
dumpe2fs /dev/sda1 tune2fs –m 10 /dev/sda1 保留block百分比 tune2fs –r 保留block数 保留的block过少,影响性能,保留的过多又浪费硬盘,默认是5%
学习了上面的性能调优命令和方法后,再总结几条调优的金句:
独立设备性能速度比集成的强,因为不占用主机整体资源
工程师一般不会远程管理计算机,需要提供日志等信息
硬盘空间越大,读取的速度越慢,可以考虑用多块硬盘组成一块较大空间
分区只是在硬盘上做标识,而不像格式化在做文件系统特性,所以速度快
硬盘越靠外侧速度越快[分区号越小越靠外区,所以将数据量大的首先分区].
程序开发者注重雇主的功能要求,系统管理员注重程序的资源开销
위 내용은 Linux 시스템의 12가지 성능 조정 명령을 살펴보세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!