您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 销售管理 > Linux服务器性能调优
Linux服务器性能调优1.性能监控跟踪工具1.CPU利用率top:提供正在运行进程和系统负荷的概览信息,以及显示活跃进程列表。按1看多核cpuvmstat:也是一个实时性能监控工具,可以由用户指定数据的显示频率。2.内存利用率top、vmstatps:可以获取每个进程的内存占用情况。3.I/O利用率iostat:监视系统的I/O活动,检查磁盘的传输速率。sar:是一个全面的系统活动收集工具,包括I/O、CPU、内存、网络等。4.网络利用率netstat:监视网络连接的常用工具,显示每种网络协议(如TCP/UDP)的活跃socket列表,还提供网络路由信息,及网络接口的累计统计数据。接口数据协议统计数据2.基准测试工具1.操作系统LMbench、Reaim2.磁盘IOzone、dbench3.网络Netperf4.应用1)Java应用volanomark、SPECjvm2)Web服务器SPECWeb、TPC-W3)文件服务器PostMark4)数据库服务器TPC-C、TPC-H3.系统调优3.1调度器调度器的职能是确保每一个任务都能获得公平的处理器时间片。可调参数:CHILD_PENALTY子进程所继承的父进程平均睡眠时间的百分比。CREDIT_LIMIT定义了一个任务的sleep_avg取值高于MAX_SLEEP_AVG从而被当作高度交互式任务的次数。EXIT_WEIGHT判定父进程是否由于创建了相对于其自身来说成为处理器贪婪进程的子进程而受到处罚。INTERACTIVE_DELTA定义在判断任务是否为交互式的时候所添加的偏移量。MAX_SLEEP_AVG定义为了计算调度奖励值,任务能够积累的最大平均睡眠时间。MAX_TIMESLICE是为具有最高静态优先级的任务分配的时间片长度。MIN_TIMESLICE是为具有最低静态优先级的任务分配的时间片长度。PARENT_PENALTY允许父进程保持的平均休眠时间的百分比。PRIO_BOUNS_RATIO规定了用于为交互式任务提供临时优先级奖励值的优先级范围百分比。STARVATION_LIMIT为了避免超时数组中的任务饿死,判断是否将一个交互式任务置入活跃数组或超时数组中的放大系数。3.2虚存Linux是通过虚存子系统来管理物理内存。可调参数:dirty_background_ratio是在尝试一个回写操作之前所持有的脏内存比例。dirty_expire_centisecs是数据可以保持为脏状态的最大厘秒数。dirty_ratio过量脏内存的比例。dirty_writeback_centisecs执行回写操作之间的时间间隔,单位也是厘秒。lower_zone_protection是为内存区域回退操作的阻止因子分配的权重。min_free_kbytes规定了可用于诸如中断处理程序发起的紧急分配内存池的大小。nr_pdflush_thread规定回写线程池的当前大小。overcommit_memory是一个允许内存过量使用的标志。overcommit_ratio指定了当overcommit_memory参数置为2时所考虑的物理内存百分比。page-cluster内核一次性读入的页面数,等于2的page-cluster值的次方。swappiness表示实际内存和虚拟内存区域进行数据交换的倾向性大小,数值越大表示倾向性越大,即交换的页面文件越多,反之亦然。3.3I/O子系统I/O子系统分为I/O调度和块I/O层。Linux2.6内核可选的几种I/O调度器:deadline最终期限调度器,基于请求超时的方法。基本思想是积极的对请求重新排队以改进I/O性能,同时确保没有I/O请求被饿死。提供了最小的读取延迟和尚佳的吞吐量,特别适合于读取较多的环境(如数据库)anticipatory前瞻调度器,基本思想是延时读写请求,希望能对它们进行排序,减少磁盘操作,获得最高的效率。用写入延时换取最大的写入吞吐量,适合写入较多的环境(比如文件服务器)CFQ完全公平排队调度器,默认算法,基本思想是在所有I/O请求发起者之间公平分配I/O带宽。为所有任务分配等量的带宽,避免进程被饿死并实现了较低的延迟,可以认为是上述两种调度器的折中,适用于有大量进程的多用户系统。noop具有极小的开销,提供了基本的合并和排序功能,主要是针对非磁盘类型的块设备。3.4文件系统Linux支持的4种日志文件系统对比:特性Ext3ReiserFSXFSJFS在IA32体系结构上支持的最大块长度4KB4KB4KB4KB文件系统的最大容量16384GB17592GB18000Pb4Pb文件的最大长度2048GB1Eb*9000Pb4Pb增加文件系统的容量补丁可以可以可以在线快照可以可以可以可以访问控制列表支持支持支持支持扩展属性支持支持支持支持磁盘inode动态分配不支持支持支持支持数据日志支持补丁不支持不支持日志置于外部设备上支持支持支持支持3.5网络主要为以下系统内核参数:net.core.rmem_defaultSocket读缓冲区全局默认大小net.core.wmem_defaultSocket写缓冲区全局默认大小net.core.rmem_maxSocket读缓冲区全局最大长度net.core.wmem_maxSocket写缓冲区全局最大长度net.core.netdev_max_backlog排队传递给设备队列的输入报文最大数量。(每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目)net.core.somaxconn限制监听队列最大数据包的数量,超过这个数量就会导致链接超时或者触发重传机制。net.core.optmem_maxSocket缓冲区的最大初始长度net.ipv4.tcp_rmemTCPSocket读缓冲区,该变量是由3个整数组成,分别为最小、默认、最大长度,最大值受限于net.core.rmem_max。net.ipv4.tcp_wmemTCPSocket写缓冲区,该变量也是由3个整数组成,分别为最小、默认、最大长度,最大值受限于net.core.wmem_max。net.ipv4.tcp_mem定义TCP内存管理区域的范围,可以控制内存管理行为,该参数也包含3个整数,分别为TCP没有内存压力时的页数上限、进入内存压力区域时的页数、拒绝socket分配时的页数,单位是页。net.ipv4.tcp_window_scalingTCP窗口缩放,默认打开。net.ipv4.tcp_sackTCP选择性应答,默认打开。减少重传。net.ipv4.tcp_dsack对Sack特性的改进,能够检测不必要的重传,默认打开,如果禁用了sack,也应该禁用它。net.ipv4.tcp_fackTCP向前应答,对Sack协议加以完善,改进了TCP的拥塞控制机制,如果禁用了sack,也应该禁用它。net.ipv4.tcp_max_syn_backlog控制每个端口的TCPsyn队列长度。net.ipv4.tcp_synack_retries控制内核向某个输入的syn/ack段重新发送响应的次数。net.ipv4.tcp_retries2控制内核向已经建立连接的远程主机重新发送数据的次数。net.ipv4.tcp_keepalive_timeTCP启动探测的空闲连接时间,单位是秒。net.ipv4.tcp_keepalive_intvlTCP保持空闲连接,探测的时间间隔,单位是秒。net.ipv4.tcp_keepalive_probesTCP保持空闲连接,探测的次数。net.ipv4.ip_local_port_range系统上可用的临时端口范围。3.6进程间通信包括信号量、消息队列、共享内存段三种资源。信号量参数:名称描述默认值最大值semmni信号量集合最大数目1282GBsemmsl每个信号量集合的信号量最大数目25065536semmns系统内的信号量最大数目320002GBsemopm每个semop系统调用的最大操作数目322GBsemvmx信号量最大取值3276765536消息队列参数:名称描述默认值最大值msgmni最大消息队列数162GBmsgmax最大消息长度(字节数)81922GBmsgmnb消息队列中的最大字节数163842GB共享内存段参数:名称描述默认值最大值shmmax共享内存段的最大字节数0x2000004GBshmmin共享内存段的最小字节数12GBshmmni共享内存段的最大数目40962GBshmall系统中共享内存段的最大页数0x2000004GB4.具体应用服务器4.1Web服务器(受网络I/O层面的影响)分为操作系统(网络)级和WebServer本身的调优1.操作系统:1)网卡速率检测(ethtool)、网卡吞吐量(iptraf)、网络流量监控(netperf、iperf、tcptrace)2)内核参数2.WebServer:1)选择高并发的WebServer(如Nginx),及配置参数优化(如并发数),增加cache机制(如Squid)。2)另外需要关注Web请求日志分析。4.2文件服务器(受磁盘I/O层面影响)1.选择文件系统ext2、ext3、JFS、ReiserFS、XFS还是其他。2.block、inode优化,block采用1024还是4096,inode和block是一对一还是一对多,创建文件系统时规划好。3.是否采用LVM逻辑卷管理工具。4.日志优化,分离日志到其他分区(磁盘)。5.通过挂载选项调优。4.3数据库服务器(受磁盘I/O层面影响)分为操作系统级和数据库本身的调优1.操作系统:大内存、高效的磁盘I/O(采用多大的数据块2K、4K还是8K)。2.数据库:1)日志文件和数据文件分离,采用原始设备还是文件系统来运行日志文件。2)表的访问要均衡的分配到所有磁盘上。3)并发连接数、查询缓存等配置参数的优化。5.FreePPMobile各角色服务器优化参数FreePPMobile目前各角色包括RootCS、LVS、Web、Memcached、NFS(FastDFS)、MEC、FPS、RS、DB,优化分为两部分:1.基础网络参数优化(包括所有)2.具体应用优化(包括Nginx、MySQL)5.1网络优化参数1.首先是关于系统openfile的配置,系统默认是1024,现在在线服务器基本配置的都是50万,修改/etc/security/limits.conf文件,增加的内容如下:*softnofile500000*hardnofile5000002.系统内核相关优化参数,主要修改系统的/etc/sysctl.conf文件,增加的内容如下:#addbyethannet.ipv4.tcp_tw_reuse=1#将处于TIME-WAIT状态的sockets重新用于新的TCP连接,默认为0,表示关闭;net.ipv4.tcp_tw_recycle=1#表示开启TCP连接中TIME-WAITsockets的快速回收,默认为0,表示关闭。net.ipv4.tcp_fin_timeout=30#修改系統默认的TIMEOUT时间net.ipv4.tcp_timestamps=0#tcp时间戳,是为了提高tcp性能的扩展选项,用于计算RTT(TCP往返传输时间)和减少重复发包,2.6内核的Linux默认是打开的。设置为0解决服务器不响应SYN包的现象。net.core.somaxconn=4096#限制socket监听队列最大数据包的数量,超过这个数量就会导致链接超时或者触发重传机制,默认的128。net.ipv4.tcp_max_orphans=3276800#系统中最多有多少个TCP套接字不被关联到任何一个用户文件句柄上。这个限制仅仅是为了防止简单的DoS攻击,缺省值是8192。net.core.netdev_max_backlog=262144#排队传递给设备队列的输入报文最大数量。net.ipv4.tcp_syn_retries=5#外向
本文标题:Linux服务器性能调优
链接地址:https://www.777doc.com/doc-3265212 .html