文档库 最新最全的文档下载
当前位置:文档库 › Linux操作系统性能调优的方法

Linux操作系统性能调优的方法

Linux操作系统性能调优的方法
Linux操作系统性能调优的方法

按照传统,Linux不同的发行版本和不同的内核对各项参数及设置均做了改动,从而使得系统能够获得更好的性能。下边将分四部分介绍在Red Hat Enterprise Linux AS和SUSE LINUX Enterprise Server系统下,如何用以下几种技巧进行性能的优化:

QUOTE:

1、Disabling daemons (关闭 daemons)

2、Shutting down the GUI (关闭GUI)

3、Changing kernel parameters (改变内核参数)

4、Kernel parameters (内核参数)

5、Tuning the processor subsystem(处理器子系统调优)

6、Tuning the memory subsystem (内存子系统调优)

7、Tuning the file system(文件系统子系统调优)

8、Tuning the network subsystem(网络子系统调优)

1 关闭daemons

有些运行在服务器中的daemons (后台服务),并不是完全必要的。关闭这些daemons可释放更多的内存、减少启动时间并减少CPU处理的进程数。减少daemons数量的同时也增强了服务器的安全性。缺省情况下,多数服务器都可以安全地停掉几个daemons。

Table 10-1列出了Red Hat Enterprise Linux AS下的可调整进程.

Table 10-2列出了SUSE LINUX Enterprise Server下的可调整进程.

注意:关闭xfs daemon将导致不能启动X,因此只有在不需要启动GUI图形的时候才可以关闭xfs daemon。使用startx命令前,开启xfs daemon,恢复正常启动X。

可以根据需要停止某个进程,如要停止sendmail 进程,输入如下命令:

Red Hat: /sbin/service sendmail stop

SUSE LINUX: /etc/init.d/sendmail stop

也可以配置在下次启动的时候不自动启动某个进程,还是sendmail:

Red Hat: /sbin/chkconfig sendmail off

SUSE LINUX: /sbin/chkconfig -s sendmail off

除此之外,LINUX还提供了图形方式下的进程管理功能。对于Red Hat,启动GUI,使用如下命令: /usr/bin/redhat-config-services 或者鼠标点击 Main Menu -> System Settings ->

Server Settings -> Services.

提示:并非所有的daemons都会显示在该配置界面,如要看到全部的daemons,使用如下命令:

/sbin/chkconfig –list

对于SUSE LINUX,图形界面是YaST2, 可用如下命令来启动

/sbin/yast2 runlevel 或者如Figure 10-2所示用鼠标点击

Browse: YaST/ ?> YaST modules ?> System ?> Runlevel editor

2 关闭GUI

只要有可能,就不要在Linux server上启动GUI图形,通常在Linux server 上,没有必要启动GUI。,所有的管理任务均可在命令行方式下完成、或者通过重定向X和Web浏览器界面。有几个可用的基于Web的工具(例如webmin, Linuxconf, 和SWAT).

需要的时候启动GUI,用完马上关闭GUI。多数情况,服务器运行在runlevel 3,即在机器启动的时候不进入GUI。命令行方式下,执行startx 来启动Xserver.

1. 查看runlevel的命令:runlevel

会显示出上次和当前的runlevel (如N 5 表示没有上次的runlevel (N) ,当前的runlevel是5).

2. 在不同的runlevels之间切换,使用命令 init

如切换到run level 3,键入命令init 3

下边是对Linux中不同runlevels的简要描述

– 0 – Halt 停机(不要将0设置为缺省,否则服务器启动后就会马上关闭)

– 1 - Single user mode 单用户模式

– 2 - Multi-user 不带NFS的多用户模式 (如果没有网络,相当与3)

– 3 - Full multi-user mode 完全多用户模式

– 4 – Unused 未使用

– 5 - X11

– 6 – Reboot 重启(不要将6设置为缺省,否则服务器会不断地重启)

修改文件/etc/inittab 来设置机器启动的runlevel,如Figure 10-3。

对于SUSE LINUX Enterprise Server, 执行YaST runlevel 命令改变缺省runlevel值.

如图Figure 10-2。

缺省情况下,保存了6个控制台:F1……F6。为节省内存,可以减少为3个。使用mingetty ttyx命令来实现,如图Figure 10-3

提示:即便是已经关闭了GUI,依然可以远程连接并启动GUI,可以使用ssh-x。

3 改变内核参数

Linux内核是操作系统的核心,对所有的Linux发行版本是通用的。内核参数可以改变,在命令行下执行sysctl 命令。

提示:缺省情况下,LINUX内核包括不必重启就可以使用sysctl命令的必要的模块。尽管如此,如果你在安装系统的时候选择移除该功能,那么你只有重新启动LINUX,才可以使得改变生效。

SUSE LINUX 提供了图形界面下的修改方式。使用如下命令来启动powertweak 工具:

/sbin/yast powertweak

使用如下命令启动基于字符的管理菜单:

/sbin/yast2 powertweak

Red Hat也提供了图形界面下更改sysctl参数的方式:

/usr/bin/redhat-config-proc

如图Figure 10-5:

Parameter storage locations

内核参数保存在/proc(特别是/proc/sys),提供了内核、处理器、内存、网络及其他组件的相关参数。每个执行的进程都有一个以相应PID命名的目录。Figure 10-3列出了一些包括内核信息的文件。

4 内核的参数

Table 10-5 列出了Red Hat V2.4与性能关系密切的一些内核参数。

5 处理器子系统调优

处理器对于应用和数据库服务器来讲是最重要的硬件子系统之一。然而在这些系统中,CPU经常是性能的瓶颈。

在配有Xeon处理器的高端服务器中,你可以启用或者关闭Hyper-Threading(超线程功能)。Hyper-Threading在操作系统里将一颗处理器虚拟化为两颗使用。Red Hat Enterprise Linux AS和SUSE LINUX Enterprise Server都支持该功能,从而可以使处理器在同一时刻执行两个线程或者进程。对于支持

Hyper-Threading的操作系统和软件来说,不需要增加 CPU时钟频率即可使性能得到明显的改进。例如,在4路的服务器上起用Hyper-Threading功能并使用性能监测工具(如top)来检测,可以看到8颗处理器。如图Figure 10-6

提示,对于Hyper-Threading:

_ 基于SMP内核的LINUX才可以支持Hyper-Threading

_ 安装的CPU数量越多,从Hyper-Threading获得的性能上的提高就越少。可获得的性能提高大约为:

– 2颗物理CPU: 15-25%

–– 4颗物理CPU: 1-13%

–– 8颗物理CPU: 0-5%

–如需更多的关于Hyper-Threading信息,可查看更多。

EM64T是Intel IA-32处理器的64-bit扩展。意思是,处理器能够支持更多的内存并支持64-bit应用同时完全兼容现存的32-bit应用。Red Hat Enterprise Linux 3 Update 2 和 SUSE LINUX Enterprise Server 9支持这种新的处理器。如需更多的EM64T信息,可查看更多。

选择正确的内核

Red Hat Enterprise Linux AS和SUSE LINUX Enterprise Server都包括有若干个内核包,如Table 10-6所列。选择合适的内核对性能非常重要。

6 内存子系统的调优

内存子系统的调优不是很容易,需要不停地监测来保证内存的改变不会对服务器的其他子系统造成负面影响。如果要改变虚拟内存参数(在/proc/sys/vm),建议您每次只改变一个参数然后监测效果。对与虚拟内存的调整包括以下几个项目:

配置Linux内核如何更新dirty buffers到磁盘。磁盘缓冲区用于暂存磁盘的数据。相对于内存来讲,磁盘缓冲区的速度很慢。因此,如果服务器使用这类内存,性能会成问题。当缓冲区内的数据完全dirty,使用:sysctl -w vm.bdflush="30 500 0 0 500 3000 60 20 0"

vm.bdflush有9个参数,但是建议您只改变其中的3个:

?nfract, 为排队写入磁盘前,bdflush daemon允许的缓冲区最大百分比?ndirty, 为bdflush即刻写的最大缓冲区的值。如果这个值很大,bdflush 需要更多的时间完成磁盘的数据更新。

?nfract_sync, 发生同步前,缓冲区变dirty的最大百分比

配置kswapd daemon,指定Linux的内存交换页数量

sysctl -w vm.kswapd="1024 32 64"

三个参数的描述如下:

–tries_base 相当于内核每次所交换的“页”的数量的四倍。对于有很多交换信息的系统,增加这个值可以改进性能。

– tries_min 是每次kswapd swaps出去的pages的最小数量。

– swap_cluster 是kswapd 即刻写如的pages数量。数值小,会提高磁盘I/O 的性能;数值大可能也会对请求队列产生负面影响。

如果要对这些参数进行改动,请使用工具vmstat检查对性能的影响。其它可以改进性能的虚拟内存参数为:

_ buffermem

_ freepages

_ overcommit_memory

_ page-cluster

_ pagecache

_ pagetable_cache

7 网络子系统的调优

操作系统安装完毕,就要对网络子系统进行调优。对其它子系统的影响:影响CPU利用率,尤其在有大量TCP连接、块尺寸又非常小时,内存的使用会明显增加。

如何预防性能下降

如下的sysctl命令用于改变安全设置,但是它也可以防止网络性能的下降。这些命令被设置为缺省值。

◆关闭如下参数可以防止黑客对服务器IP地址的攻击

◆开启TCP SYN cookies,保护服务器避免受syn-flood攻击,包括服务取决denial-of-service (DoS) 或者分布式服务拒绝distributed

denial-of-service (DDoS) (仅适用Red Hat Enterprise Linux AS)

◆以下命令使服务器忽略来自被列入网关的服务器的重定向。因重定向可以被用来进行攻击,所以我们只接受有可靠来源的重定向。

另外,你可以配置接受或拒绝任何ICMP重定向。ICMP重定向是路由器传输路由信息的机制。比如,当网关接收到来自所接网络主机的 Internet数据报时,网关可以发送重定向信息到一台主机。网关检查路由表获得下一个网关的地址,第二个网关将数据报路由到目标网络.关闭这些重定向得命令如下:

◆如果这个服务器不是一台路由器,那么它不会发送重定向,所以可以关闭该功能:

◆配置服务器拒绝接受广播风暴或者smurf 攻击attacks:

◆忽略所有icmp包或者pings:

◆有些路由器针对广播祯发送无效的回应,每个都产生警告并在内核产生日志.这些回应可以被忽略:

8.针对TCP和UDP的调优

下边的命令用来对连接数量非常大的服务器进行调优。

◆对于同时支持很多连接的服务器,新的连接可以重新使用TIME-WAIT套接字. 这对于Web服务器非常有效:

如果你使用该命令,还要启动TIME-WAIT 套接字状态的快速循环功能:

图Figure 10-7显示出将这些功能启用,连接数量明显降低.因为每个TCP传输都包含远程客户端的协议信息缓存,所以有利于提高性能.缓存中存放round-trip 时间、最大segment大小、拥塞窗口的信息。

◆参数tcp_fin_timeout 是套接字关闭时,保持FIN-WAIT-2状态的时间。一个TCP连接以three-segment SYN序列开始, 以three-segment FIN序列结束.均不保留数据.通过改变tcp_fin_timeout的值, 从FIN序列到内存可以空闲出来处理新连接的时间缩短了,使性能得到改进.改变这个值的前要经过认真的监测,避免因为死套接字造成内存溢出.

◆服务器的一个问题是,同一时刻的大量TCP连接里有很多的连接被打开但是没有使用. TCP的keepalive功能检测到这些连接,缺省情况下,在2小时之后丢掉. 2个小时的可能导致内存过度使用,降低性能.因此改成1800秒(30分钟)是个更好的选择:

◆对于所有协议的队列,设置最大系统发送缓存(wmem) 和接收缓存(rmem)到

8MB

这些设置指定了创建TCP套接字时为其分配的内存容量. 另外,使用如下命令发送和接收缓存.该命令设定了三个值:最小值、初始值和最大值:

第三个值必须小于或等于wmem_max和rmem_max。

◆(SUSE LINUX En terprise Server适用) 通过保留路径验证来源数据包。缺省情况下,路由器转发所有的数据包,即便是明显的异常网络流量。通过启动和是的过滤功能,丢掉这些数据包:

◆当服务器负载繁重或者是有很多客户端都是超长延时的连接故障,可能会导致half-open连接数量的增加。这对于Web服务器很来讲很平常,尤其有很多拨号客户时.这些half-open连接保存在 backlog connections 队列中.将这个值最少设置为4096 (缺省为1024). 即便是服务器不接收这类连接,设置这个值还能防止受到denial-of-service (syn-flood)的攻击.

◆设置ipfrag参数,尤其是NFS和Samba服务器。这里,我们可以设置用于重新组合IP碎片的最大、最小内存。当ipfrag_high_thresh值被指派,碎片会被丢弃直到达到ipfrag_low_thres值。

当TCP数据包传输发生错误时,开始碎片整理。有效的数据包保留在内存,同时损坏的数据包被转发。例如,设置可用内存范围从256 MB到384 MB

五大Linux简单命令解决系统性能问题

管理Linux主机的性能看起来经常象是在变魔术一样。许多管理员在遇到性能问题的时候常常简单化处理,依靠硬件的更新换代,更大的内存和更强的CPU来解决问题。事实上,利用一些简单的Linux命令,可以发现许多管理主机的细节问题并且能迅速而简单地解决性能问题。

一、top

对许多管理员来说,最新学会的就是TOP命令,它可以显示出当前运行的所有内核任务,并且提供了一些主机状态的统计报告。默认地,TOP命令每隔五分钟自动更新一次这个数据(这个更新间隔是可设置的)。

TOP命令的功能丰富到令人难以置信(估计很少有人使用过一半以上的功能)。一般来说你会以‘h’键开始,就是‘help’(说明文档也非常精彩)。帮助参

数可以快速显示出你能从中增加和减去的内容,同时也可以改变排序。你还可以用k来结束进程或者用r标注特别的进程。

Top命令显示当天的正常运行时间、系统负载、处理器的数量、内存的使用率和哪些进程使用了大多数CPU资源(包括每个进程的大量相关信息,例如在线用户和正在执行的命令等)。

二、vmstat

Vmstat命令提供给你一个当前CPU、IO、进程和内存使用率的快照。和TOP命令一样,它自动动态刷新,并且可以用下面的命令执行:

$ vmstat 10

在这里延迟是指两次刷新间隔的以秒为单位的时间,这里是10秒钟。VMSTAT命令会将检查的结果不停刷新显示在屏幕上,直到你用CTRL-C命令结束它(或者你也可以在执行的时候设置一个限制)。这个持续输出的结果有时候被用来导入到文件中用来分析性能趋势,但是我们将找到更好的方式来做这件事情,在文章后面的部分会介绍。

第一列显示的是处理器, r列是待命的处理器,而b列是休眠的处理器。如果你在这里看到好多个待命的处理器,那说明你可能在某个地方遇到了性能瓶颈。第二列显示的是内存:虚拟的,空闲的,缓冲和缓存内存。第三列显示的是交换存储以及具体有多少内存在和磁盘做交换。第四列则是I/O信息,显示了块服务接收和发送的块数据信息。

最后两列显示了系统和CPU相关的信息。系统列显示的是冲突的数量和每秒钟的交换。CPU列是显示了特别有用的信息。每个分列显示了一个CPU时间的百分比。这些分列如下:

US:运行用户任务和代码耗费的时间

SY:运行内核或者系统代码耗费的时间

ID:空闲时间

WA:等待IO耗费的时间

ST:虚拟机占用的时间

VMSTAT命令擅长用来查询CPU使用情况,虽然记住每个参数主要取决于持续的监控,因为对CPU进行短时间的观察你可能无法获知CPU真正的问题所在。你需要查看长期的运行趋势来获得一个确切的CPU性能信息。

三、iostat

我们接下来要讲的命令是IOSTAT。IOSTAT命令(在UBUNTU、红帽和FEDORA系统中都是由SYSSTAT软件包提供的)可以提供三个报告:CPU使用率、设备使用率和网络文件系统使用率。如果你不加任何参数地运行该命令,它会显示所有这三个报告,你可以通过加参数-c、-d和-h来单独显示它们中的一种。

在上面的图中你可以看到它们中的其中两个报告,第一个是CPU使用率,它将各进程占用的CPU用百分比分类列出来了。你能看到用户进程、系统进程、iowait 和空闲时间等信息。

第二个报告是关于设备使用率,显示了安装在该主机上的每个设备和一些有用的信息,诸如每秒传输量、数据块读写,并且允许你对有性能问题的设备做标记。你可以通过添加-k或者-m参数来按照千字节或者兆字节显示统计信息,而不是以数据块为单位,这样在某些情况下会更便于查阅和理解。

最后一个报告,没有截图,显示的信息和上面介绍的设备使用率有点相似,只是对象从附件的设备换成了挂载的网络文件系统。

四、free

下一个命令free,可以显示主内存和交换内存的统计量。

你可以通过添加-t参数来显示总的内存,或者通过添加-b参数和-m参数来用字节数显示(默认情况是用千字节为单位)。

FREE命令还可以通过使用-s参数来使其以某个间隔时间持续刷新地运行:

$ free -s 5

这个命令是以每隔5秒钟刷新一次的方式运行FREE命令并输出结果。

五、sar

象我们见过的许多其它工具一样,我们可以用sar命令来收集、查看和记录服务器的性能数据。它比我们见过的任何类似工具都更强大,并且可以收集和显示长时间段的数据。在红帽和UBUNTU上,它通过SYSSTAT包来安装。让我们从不添加任何参数运行SAR命令开始吧:

$ sar

从这里我们可以看到sar命令的基本输出信息,包括CPU统计(每隔10分钟一次的数据和最后的平均数据)。该信息是从一个以24小时为单位不停收集信息的日统计文件中抓取出来的(这个文件存储在目录/var/log/sa/中,并且被命令为saxx这样的格式,xx代表该数据收集的日期)。另外它还收集关于内存、

设备、网络等的统计信息(例如,通过加-b参数可以查看块设备统计信息,-n采查看网络数据,-r参数看内存使用)。你还可以用-A参数来查看所有收集的数据。

你还可以长时间运行sar命令然后将输出数据导入一个文件中来收集数据。要达到这个效果,需要使用参数-o和一个文件名称,要运行该命令的时间间隔(记得收集数据会导致性能变差,所以最好确保这个间隔不要太短)和循环的次数-你要记录的间隔次数。如果你不输入循环次数,则sar命令会一直运行下去,例如:

$ sar -A -o /var/log/sar/sar.log 600 >/dev/null 2>&1 &

这里我们将收集所有数据(-A),记录到文件/var/log/sar/sar.log中,每隔600秒(或者5分钟)收集一次,持续在后台运行。如果接下来我们想要显示这个数据我们可以用sar命令加上-f参数,例如:

$ sar -A -f /var/log/sar/sar.log

这是一个非常基本的sar命令介绍。用sar命令还可以得到许多很有用的数据,这能使得查看主机性能变得更加方便和有效。我建议你去查看一下sar命令的说明文档从而获得更详细的方法来获得你需要的数据。

这这篇文章中,我们看到了5个基本的用在linux主机上管理和查看性能状态的命令工具。除此之外,去看一下其它一些工具如munin和 collected等也是非常值得的,它们不仅收集关于性能的数据,还能查看应用程序和服务等,包括使用你自己的插件等。这些工具都支持增加图形化的输入,这样可以让你用图形更直观的查看你的数据。

Linux性能监控、调优(CPU篇)

Linux性能监控、调优(CPU篇) 前言: 网上其实有很多关于这方面的文章,那为什么还会有此篇呢,有这么几个原因,是我翻 译的动力,第一,概念和内容虽然老套,但都讲得很透彻,而且还很全面.第二,理论结合实际,其中案例分析都不错.第三,不花哨,采用的工具及命令都是最基本的,有助于实际操作.但本人才疏学浅,译文大多数都是立足于自己对原文的理解,大家也可以自己去OSCAN上找原文,如果有什么较大出入,还望留言回复,甚是感激! 1.0 性能监控介绍 性能优化就是找到系统处理中的瓶颈以及去除这些的过程,多数管理员相信看一些相关的"cook book"就可以实现性能优化,通常通过对内核的一些配置是可以简单的解决问题,但并不适合每个环境,性能优化其实是对OS 各子系统达到一种平衡的定义,这些子系统包括了: CPU Memory IO Network 这些子系统之间关系是相互彼此依赖的,任何一个高负载都会导致其他子系统出现问题.比如: 大量的页调入请求导致内存队列的拥塞 网卡的大吞吐量可能导致更多的CPU开销 大量的CPU开销又会尝试更多的内存使用请求 大量来自内存的磁盘写请求可能导致更多的CPU 以及IO问题 所以要对一个系统进行优化,查找瓶颈来自哪个方面是关键,虽然看似是某一个子系统 出现问题,其实有可能是别的子系统导致的. 1.1 确定应用类型 基于需要理解该从什么地方来入手优化瓶颈,首先重要的一点,就是理解并分析当前系 统的特点,多数系统所跑的应用类型,主要为2种: IO Bound(译注:IO 范畴): 在这个范畴中的应用,一般都是高负荷的内存使用以及存储系统,这实际上表示IO 范畴的应用,就是一个大量数据处理的过程.IO 范畴的应用不对CPU 以及网络发起更多请求(除非类似NAS这样的网络存储硬件).IO 范畴的应用通常使用CPU 资源都是为了产生IO 请求以及进入到内核调度的sleep 状态.通常数据库软件(译 注:mysql,oracle等)被认为是IO 范畴的应用类型.

linux_操作系统优化方案

按照传统,Linux不同的发行版本和不同的内核对各项参数及设置均做了改动,从而使得系统能够获得更好的性能。下边将分四部分介绍在Red Hat Enterprise Linux AS和SUSE LINUX Enterprise Server系统下,如何用以下几种技巧进行性能的优化: 1、Disabling daemons (关闭daemons) 2、Shutting down the GUI (关闭GUI) 3、C hanging kernel parameters (改变内核参数) 4、Kernel parameters (内核参数) 5、Tuning the processor subsystem(处理器子系统调优) 6、Tuning the memory subsystem (内存子系统调优) 7、Tuning the file system(文件系统子系统调优) 8、Tuning the network subsystem(网络子系统调优) 1 关闭daemons 有些运行在服务器中的daemons (后台服务),并不是完全必要的。关闭这些daemons可释放更多的内存、减少启动时间并减少C PU处理的进程数。减少daemons数量的同时也增强了服务器的安全性。缺省情况下,多数服务器都可以安全地停掉几个daemons。 Table 10-1列出了Red Hat Enterprise Linux AS下的可调整进程. Table 10-2列出了SUSE LINUX Enterprise Server下的可调整进程

注意:关闭xfs daemon将导致不能启动X,因此只有在不需要启动GUI图形的时候才可以关闭xfs daemon。使用startx 命令前,开启xfs daemon,恢复正常启动X。 可以根据需要停止某个进程,如要停止sendmail 进程,输入如下命令: Red Hat: /sbin/service sendmail stop SUSE LINUX: /etc/init.d/sendmail stop 也可以配置在下次启动的时候不自动启动某个进程,还是send mail: Red Hat: /sbin/chkconfig sendmail off SUSE LINUX: /sbin/chkconfig -s sendmail off 除此之外,LINUX还提供了图形方式下的进程管理功能。对于Red Hat,启动GUI,使用如下命令:/usr/bin/redhat-config-serv ices 或者鼠标点击M ain M enu -> System Settings -> Serv er Settings -> Serv ices.

LINUX性能调优方法总结

LINUX性能调优方法总结 大多数 Linux 发布版都定义了适当的缓冲区和其他 Transmission Control Protocol(TCP)参数。可以修改这些参数来分配更多的内存,从而改进网络 性能。设置内核参数的方法是通过 proc 接口,也就是通过读写 /proc 中的值。幸运的是,sysctl 可以读取 /etc/sysctl.conf 中的值并根据需要填充 /proc,这样就能够更轻松地管理这些参数。清单 2 展示在互联网服务器上应用于 Internet 服务器的一些比较激进的网络设置。 # Use TCP syncookies when needed net.ipv4.tcp_syncookies = 1 # Enable TCP window scaling net.ipv4.tcp_window_scaling: = 1 # Increase TCP max buffer size net.core.rmem_max = 16777216 net.core.wmem_max = 16777216 # Increase Linux autotuning TCP buffer limits net.ipv4.tcp_rmem = 4096 87380 16777216 net.ipv4.tcp_wmem = 4096 65536 16777216 # Increase number of ports available net.ipv4.ip_local_port_range = 1024 65000 将这些设置添加到 /etc/sysctl.conf 的现有内容中。第一个设置启用TCP SYN cookie。当从客户机发来新的 TCP 连接时,数据包设置了 SYN 位,服务 器就为这个半开的连接创建一个条目,并用一个 SYN-ACK 数据包进行响应。在正常操作中,远程客户机用一个 ACK 数据包进行响应,这会使半开的连接 转换为全开的。有一种称为 SYN 泛滥(SYN flood)的网络攻击,它使 ACK 数据包无法返回,导致服务器用光内存空间,无法处理到来的连接。SYN cookie 特性可以识别出这种情况,并使用一种优雅的方法保留队列中的空间(细节参见参考资料一节)。大多数系统都默认启用这个特性,但是确保配 置这个特性更可靠。 启用 TCP 窗口伸缩使客户机能够以更高的速度下载数据。TCP 允许在未从远程端收到确认的情况下发送多个数据包,默认设置是最多 64 KB,在与延迟比 较大的远程客户机进行通信时这个设置可能不够。窗口伸缩会在头中启用更多的位,从而增加窗口大小。 后面四个配置项增加 TCP 发送和接收缓冲区。这使应用程序可以更快地丢掉它的数据,从而为另一个请求服务。还可以强化远程客户机在服务器繁忙时发

linux中的weblogic性能调优

Linux中的Weblogic性能测试调整 一.操作系统参数调整 1.linux TCP连接数调整 通过命令:ulimit –n 查看当前最大TCP连接数,这表示当前用户的每个 进程最多允许同时打开多少个文件。一般系统默认为1024,在并发量大 的情况下肯定不够用。 修改此限制的最简单办法:ulimit –n 设置单一进程允许打开 的最大文件数。如果系统回显类似于“Operation not permitted”之类的话,说明修改失败,需要修改系统对该用户打开文件数的软限制或硬限制。 修改软限制或硬限制: 修改/etc/security/limits.conf文件,在文件中添加如下行: * soft nofile 10240 * hard nofile 10240 表示修改所有用户的限制,也可以用指定用户名替代。 修改/etc/pam.d/login文件,在文件中添加如下行: session required /lib/security/pam_limits.so 查看Linux系统级的最大打开文件数限制:cat /proc/sys/fs/file-max 2.修改网络内核对TCP连接的有关限制 端口范围: 修改/etc/sysctl.conf文件,在文件中添加如下行: net.ipv4.ip_local_port_range = 1024 65535 另外,有时无法建立TCP连接的原因可能是因为Linux网络内核的IP_TABLE防火 墙对最大跟踪的TCP连接数有限制 修改/etc/sysctl.conf文件,在文件中添加如下行:net.ipv4.ip_conntrack_max = 10240 这表明将系统对最大跟踪的TCP连接数限制设置为10240。请注意,此限制值要尽 量小,以节省对内核内存的占用。 3.其他参数调整 在/etc/sysctl.conf文件中增加如下参数,进行系统参数调整 net.core.rmem_default=128388607 默认的TCP数据接收缓冲 net.core.wmem_default=128388607 默认的TCP数据发送缓冲 net.core.rmem_max=128388607 net.core.wmem_max=128388607

Linux-2.6.31内核优化指南

Linux 2.6.31内核优化指南 作者:Ken Wu Email: ken.wug@https://www.wendangku.net/doc/122847364.html, 介绍 本文档是一篇关于Linux Kernel 2.6.31的最简优化指南。作者旨在编译一份性 能最佳且适合普通Application/Server开发用的内核。(非生产环境) 本文提及的内核调优,主要是通过选择最佳编译选项,删除无用驱动,减少内核尺寸,关闭部分安全特性等方式来进行的。 优化后的效果,主要体现在OS启动时间,启动后的内存占用以及应用程序运行性能。 由于作者水平有限,如果描述错误,还请不吝指教。 运行环境 虚拟机Virtualbox 3.1.4 CPU Core 2 Duo P9500 2.53G双核开启vt-x, APIC 磁盘 虚拟10G的SATA磁盘 内存 分了1G物理内存 网卡 虚拟AMD PCNet32 100M 其他USB,串口,显卡,声卡全关 作者是在虚拟机中编译的内核,如果你与作者的运行环境不同,则本文档中的部分描述可能会与你的实际情况有一定出入。 不过,相信大部分用户在看到选项释义时,能做出适合自己的选择。 说明 下列选项中,通过"// "注释的行,代表金国步写的内核选项简介中未提及的选项释义。 通过红色"<==="注释的行,代表内核默认开启,本文档推荐关闭的选项,释

义部分会给出关闭的理由。 参考资料 金国步写的内核选项简介 Linux Kernel Database Linuxsir BBS 优化前后性能对比 项目优化前优化后 内核尺寸 4.1M 1.6M 启动时间(含dhcp+默认init service)22s14s 启动后的内存占用25M22M APP SPEC测试成绩待测待测 General setup ---> [ ] Prompt for development and/or incomplete code/drivers <===显示尚在开发中或尚未完成的代码和驱动.我不是内核或驱动开发人员。 () Local version - append to kernel release [ ] Automatically append version information to the version string Kernel compression mode (Bzip2) ---> <===对比默认的Gzip,Bzip2拥有更高的压缩比 [*] Support for paging of anonymous memory (swap) [*] System V IPC [*] BSD Process Accounting

Linux 性能测试与分析报告

Linux 性能测试与分析 Linux 性能测试与分析 Revision History 1 性能测试简介 l 性能测试的过程就是找到系统瓶颈的过程。 l 性能测试(包括分析和调优)的过程就是在操作系统的各个子系统之间取得平衡的过程。l 操作系统的各个子系统包括: ?CPU

?Memory ?IO ?Network 他们之间高度依赖,互相影响。比如: 1. 频繁的磁盘读写会增加对存的使用 2. 大量的网络吞吐,一定意味着非常可观的CPU利用率 3. 可用存的减少可能增加大量的swapping,从而使系统负载上升甚至崩溃 2 应用程序类型 性能测试之前,你首先需要判断你的应用程序是属于那种类型的,这可以帮助你判断哪个子系统可能会成为瓶颈。 通常可分为如下两种: CPU bound –这类程序,cpu往往会处于很高的负载,当系统压力上升时,相对于磁盘和存,往往CPU首先到达瓶颈。Web server,mail server以及大部分服务类程序都属于这一类。 I/O bound –这类程序,往往会频繁的访问磁盘,从而发送大量的IO请求。IO类应用程序往往利用cpu发送IO请求之后,便进入sleep状态,从而造成很高的IOWAIT。数据库类程序,cache服务器往往属于这种类型。 3 CPU

3.1 性能瓶颈 3.1.1 运算性能瓶颈 作为计算机的计算单元,其运算能力方面,可能出现如下瓶颈: 1. 用户态进程CPU占用率很高 2. 系统态(核态)CPU占用率很高 测试CPU的运算性能,通常是通过计算圆周率来测试CPU的浮点运算能力和稳定性。据说Pentium CPU的一个运算bug就是通过计算圆周率来发现的。圆周率的计算方法,通常是计算小数点后104万位,通过比较运算时间来评测CPU的运算能力。 常用工具: 1. SUPER PI(π) 2. Wprime 与SuperPI不同的是,可以支持多核CPU的运算速度测试 3. FritzChess 一款国际象棋测试软件,测试每秒钟可运算的步数 突破CPU的运算瓶颈,一般只能靠花钱。比如提高时钟频率,提高L1,L2 cache容量或不断追求新一代的CPU架构: Core -> Nehalem(E55x,如r710,dsc1100) -> Westmere –> Sandy Bridge 3.1.2 调度性能瓶颈 CPU除了负责计算之外,另一个非常重要的功能就是调度。在调度方面,CPU可能会出现如下性能瓶颈: 1. Load平均值超过了系统可承受的程度 2. IOWait占比过高,导致Load上升或是引入新的磁盘瓶颈 3. Context Switch过高,导致CPU就像个搬运工一样,频繁在寄存器(CPU Register)和运行队列(run queue)之间奔波 4. 硬中断CPU占比接近于100% 5. 软中断CPU占比接近于100% 超线程 超线程芯片可以使得当前线程在访问存的间隙,处理器可以使用它的机器周期去执行另外一个线程。一个超线程的物理CPU可以被kernel看作是两个独立的CPU。 3.2 典型监控参数 图1:top

linux系统性能优化及瓶颈分析

linux系统性能优化及瓶颈分析 一,用vmstat分析系统I/O情况 [root@localhost ~]# vmstat -n 3 (每个3秒刷新一次) procs-----------memory--------------------swap--- ---io---- --system---- ------cpu-------- r b swpd free buff cache si so bi bo in cs us sy id wa 1 0 144 186164 105252 2386848 0 0 18 166 83 2 48 21 31 0 2 0 144 189620 105252 2386848 0 0 0 177 1039 1210 34 10 56 0 0 0 144 214324 105252 2386848 0 0 0 10 1071 670 32 5 63 0 0 0 144 202212 105252 2386848 0 0 0 189 1035 558 20 3 77 0 2 0 144 158772 105252 2386848 0 0 0 203 1065 2832 70 14 15 0 IO -bi:从块设备读入的数据总量(读磁盘)(KB/S) -bo:写入到块设备的数据总量(写磁盘)(KB/S) 随机磁盘读写的时候,这2个值越大(如超出1M),能看到CPU在IO等待的值也会越大 二,用iostat分析I/O子系统情况 如果你的系统没有iostat,sar,mpstat等命令,安装sysstat- 7.0.2-1.el5.i386.rpm包,iostat工具将对系统的磁盘操作活动进行监视。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU 使用情况。同vmstat

Linux 性能调优的几种方法

Linux 性能调优的几种方法 按照传统,Linux不同的发行版本和不同的内核对各项参数及设置均做了改动,从而使得系统能够获得更好的性能。下边将分四部分介绍在Red Hat Enterprise Linux AS和SUSE LINUX Enterprise Server系统下,如何用以下几种技巧进行性能的优化: 1、Disabling daemons (关闭daemons) 2、Shutting down the GUI (关闭GUI) 3、Changing kernel parameters (改变内核参数) 4、Kernel parameters (内核参数) 5、Tuning the processor subsystem(处理器子系统调优) 6、Tuning the memory subsystem (内存子系统调优) 7、Tuning the file system(文件系统子系统调优) 8、Tuning the network subsystem(网络子系统调优) 1 关闭daemons 有些运行在服务器中的daemons (后台服务),并不是完全必要的。关闭这些daemons可释放更多的内存、减少启动时间并减少CPU处理的进程数。减少daemons数量的同时也增强了服务器的安全性。缺省情况下,多数服务器都可以安全地停掉几个daemons。 Table 10-1列出了Red Hat Enterprise Linux AS下的可调整进程. Table 10-2列出了SUSE LINUX Enterprise Server下的可调整进程

注意:关闭xfs daemon将导致不能启动X,因此只有在不需要启动GUI图形的时候才可以关闭xfs daemon。使用startx命令前,开启xfs daemon,恢复正常启动X。

linux性能调优学习笔记

Linux 性能调优 1.Profiling几种工具 profiling 包括几种:cpu profiling,即提到的性能分析。memory profiling,即分析程序性能。network profiling,即网络流量的分析。 另外,profiling又分两种:1, sampling。即采样方式。2, instruments,即插装代码技术。(包含: 编译期间,链接期间,运行期间)。 oprofile ---- 属于sampling 方式,即不影响程序行为,也不需要重启程序,它是对cpu进行采样分析。 gprof ---- 属于插装技术,需在编译期间增加-pg 选项,属于GNU 部分,不需安装,随着gcc附带。 valgrind--- 属于插装技术,需要在运行期间增加valgrind选项。(其中massif工具用于内存分析,callgrind用于性能分析) google-perftools ---- 属于插装技术,需要在链接期间增加-L/usr/lib -lprofiler 选项。 2.gprof 分析linux程序性能瓶颈 gcc -pg -o test test.c test运行的时候会把搜集的信息保存在gmoun.out中 fedora 不能使用-lc_p选项的问题 一般gprof只能查看用户函数信息。如果想查看库函数的信息,需要在编译是再加入“-lc_p”编译参数代替“-lc”编译参数,这样程序会链接libc_p.a库,才可以产生库函数的profiling信息。 需要安装glibc-profile,下载地址 http://ftp.riken.jp/Linux/fedora/core/updates/2/i386/glibc-profile-2.3.3-27.1.i386.rp。 gprof hello gmon.out -p 得到每个函数占用的执行时间 gprof hello gmon.out -q 得到call graph,包含了每个函数的调用关系,调用次数,执行时间等信息。 gprof hello gmon.out -A 得到一个带注释的“源代码清单”,它会注释源码,指出每个函数的执行次数。这需要在编译的时候增加-g选项。 3.Oprofile性能调优 https://www.wendangku.net/doc/122847364.html,/news/ 要使用oprofile 首先得采用打开oprofile支持的内核启动。 Oprofile需要重新编译内核,请确认: .config 文件中设置: CONFIG_PROFILING=y CONFIG_OPROFILE=y 另外,还要在Processor type and features 菜单中启用Local APIC 和IO-APIC: CONFIG_X86_LOCAL_APIC=y CONFIG_X86_IO_APIC=y 查看处理起本身没有集成APIC oprofile.ko内核模块已经被集成到linux 2.6内核中,所以只需要安装前端工具,可以从

嵌入式linux内存使用与性能优化

嵌入式linux内存使用与性能优化 https://www.wendangku.net/doc/122847364.html,/bird67/article/details/199686592014本文摘自: https://www.wendangku.net/doc/122847364.html,/liuchao1986105/article/details/66776631、内核分配物理内存的最小单位为一个物理页面,一个物理页面为4kb。无论虚拟内存分配了多少字节,比如malloc(400),内核仍然分配4kb物理内存页面。 2、malloc语句执行时,只是给进程分配了虚拟内存,虚拟内存此时不占用物理内存。当使用此处内存时,比如变量赋值*p = ??或memcpy或strcpy时,内核会产生一个页故障,从而为进程分配一个物理页面。 3、进程状态可以在/proc中根据pid值找到进程的目录。 目录中statm信息(cat statm)中的7个数,以页为单位。 从左至右依次为size:任务虚拟地址空间大小。 resident:应用程序正在使用的物理内存大小。shared:共享页数。 trs:程序所拥有的可执行虚拟内存大小。lrs:被映像到任务的虚拟内存空间的库的大小。drs:程序数据段和用户态的栈的大小。dt:脏页数量。 4、目录中maps信息(cat maps)中,表示进程使用的虚拟地址(栈,堆,代码等)。内存使用权限信息r=读,

w=写,x=执行,s=共享,p=私有。r-xp通常表示代码段,只读,可执行。Rw-p通常表示数据段,可读写,不能执行。rwxp通常表示栈段,读写,可执行。栈不仅可以保存数据,也可以保存代码。 5、32位操作系统中,进程虚拟内存为4g,分为两部分,内核空间(高1g),用户空间(低3g)。 6、堆段:每个进程有一个,不论是主进程、动态库还是不同的线程里申请的堆内存,都反映在进程的堆段。栈段:每个线程有一个,如果进程中有多个线程,则包含多个栈段。代码段:由于其只读,不会被修改,故其在整个系统中共享。比如说一个执行文件,在系统中同时存在多个进程,那么这些进程将共享其代码段所占用的内存。 数据段:由于它是可写的,其内容与其所在的进程高度相关,所以在程序运行时会为每个进程创建一个数据段副本,故每个进程有一个数据段。 7、p = malloc(xxx); 分配给p的大小存放于*(p - 4)位置。 8、readelf、size、strip命令的使用。Nm ???.out检查???.out 执行文件的符号表。 9、检查当前内核配置的进程栈大小,使用ulimit -a命令查看stack size:。如需设置栈大小,使用ulimit -s 16384,栈大小为16k。 10、线程栈空间未设置时,通常为2m。2m的栈空间略微显

RHCA-RH442 linux 性能优化 笔记

RHCA-RH442总结 UNIT2 COLLECTING,GRAPHING AND INTERPRETING DATA Units and Unit Conversions How much is how much? international System of Units (SI)prefixes are decimal: kilo-(K)=10^3 mega-(M)=10^6 giga-(G)=10^9 tera-(T)=10^12 peta-(P)=10^15 exa-(E)=10^18 The International Electrotechnical Commission(IEC)prefixes are binary: kibi-(Ki)=2^10 mebi-(Mi)=2^20 gibi-(Gi)=2^30 tebi-(Ti)=2^40 pebi-(Pi)=2^50 exbi-(Ei)=2^60 Profiling Tools vmstat:虚拟内存统计 语法:vmstat [-V] [-n] [delay [count]] -V 表示打印出版本信息 -n 表示在周期性循环输出时,输出的头部信息仅显示一次 delay 表示两次输出之间的间隔时间 count 表示按照delay指定的时间间隔统计的次数,默认为1 procs: r:运行和等待cpu时间片的进程数,这个值如果长期大于系统CPU的个数,表示CPU不足,需增加CPU b:处于不可打扰睡眠中的进程数(等待资源的进程数),比如正在等待I/O 或内存交换。 memory: swpd:表示切换到内存交换区的内存大小。如果swpd的值不为0或比较大,只要si,so的值长期为0,一般不会影响系统性能。(KB) free:当前空闲的物理内存。(KB) buff:用作buffers cache的内存数量,一般对块设备的读写才需要缓冲。 cache:用作page cached的内存数量,一般作为文件系统进行缓存,频繁访问的文件都会被缓存。如果cache值较大,说明缓存的文件数较多,如果此时io 中的bi比较小,说明文件系统效率比较好。 swap si:表示由磁盘调入内存,也就是由内存进入内存交换区的内存大小。 so:表示有内存调入磁盘,也就是由内存交换区进入内存的内存大小。

Linux性能优化之定期清理和保留 history 记录

Linux性能优化之定期清理和保留 history 记录 有经验的 Linux 系统工程师都喜欢把 Bash 的 HISTSIZE/HISTFILESIZE 设置的很大,这样可以记录更多的历史命令以便以后查阅,这是个好习惯,但有个小问题就是 history 记录了的大量信息在系统启动后就被 load 到内存里,并且一直保存在内存里,这样浪费了不少内存,据统计100000条历史记录大概占用 10MB 左右的内存。要知道,现在的IT运维系统已经趋向于云计算和虚拟化,其特别就是根据你对硬件资源的需求为你定制的分配。因此,history所占用的内存完全是没必要的,10MB的可用内存可以干很多事情,比如启用一个 MySQL 服务,开个 syslogd等。 那么如何保存尽量多的历史记录而又不浪费内存呢?一个办法就是把历史记录定期保存到硬盘上,bash 的当前历史记录保存在 .bash_history 里,只要定期清理这个文件的记录就可以了:[code language=”bash”] #!/bin/bash # archive linux command history files umask 077 maxlines=2000 lines=$(wc -l < ~/.bash_history) if (($lines > $maxlines)); then cut=$(($lines – $maxlines)) head -$cut ~/.bash_history >> ~/.bash_history.sav sed -e "1,${cut}d" ~/.bash_history > ~/.bash_history.tmp mv ~/.bash_history.tmp ~/.bash_history fi [/code] 上面脚本所做的事情很简单,检查 .bash_history 文件,如果行数超过2000行就剪裁2000行记录(这个值可以自定义,修改maxlines参数即可)并添加到 .bash_history.sav 这个文件里,这样我们就可以保存所有的历史记录,而且当前的历史记录不超过2000行,只占用少量资源。

LINUX性能调优完全手册(誉天教学整理)

Linux性能调优 目录 1. “/etc/profile”文件 2. “bdflush”参数 3. “ip_local_port_range”参数 4. “/etc/nsswitch.conf”文件 5. “/proc”文件系统 6. “ulimit”参数 7. 增加系统打开的文件数目 8. 文件“atime”属性 9. 文件的“noatime”属性 10. 特定的TCP/IP栈 11. 交换分区 12. 调整IDE硬盘性能

概述 优化网络性能在很大程度上与网络上使用的软硬件相关。如何优化网络是很难用一本书说得清楚的。在网络真正运行起来之前是很难知道网络的瓶颈所在。性能优化并不是很简单和直观的,必须当作一个很复杂的任务。而且,不仅受到很多约束还需要很高的精确度。除非进行专门的测试以诊断系统中的瓶颈,否则对一些现象很难做出解释。有时,性能优化会变成一项让人十分失望并且乏味的工作,尤其是在经过大量的分析之后所得到的结果仍然不可确定的时候。但是,对系统性能的优化是一项很有回报的工作,并且会给整个系统带来长期的益处。

1. “/etc/profile”文件 “etc/profile”文件含有系统大量的环境和启动程序的配置信息。你在该文件中进行的配置,可以通过申请全局环境变量来实现。因此,在该文件中设置优化标志,是一种明智的选择。要想使x86程序获得最佳性能,可以在编译时,使用最佳的优化选项-O9 。许多程序的“Makefile”文件中已经含有-O2选项,而-O9使编译器采用最高级别的优化。尽管它将增加最终程序的大小,但这样可以获得更高的运行速度。编译时,使用“-fomit-frame-pointer”选项,程序运行时,访问变量时将使用堆栈。但是,使用这一选项,生产的代码将无法调试。使用 “-mcpu=cpu_type”和“-march=cpu_type”选项,Gcc将针对这种型号CPU进行专门的优化,但生成的代码只能在所指定的CPU或更高系列的CPU上运行。 对于CPU i686或PentiumPro、Pentium II、Pentium III 在“/etc/profile”文件中 , 加入一行: CFLAGS=’-O9 -funroll-loops -ffast-math -malign-double -mcpu=pentiumpro -march=pentiumpro -fomit- frame-pointer -fno-exceptions’ 对于CPU i586或Pentium

性能分析与调优的原理及原则

性能分析与调优的原理 最近一直纠结性能分析与调优如何下手,先从硬件开始,还是先从代码或数据库。从操作系统(CPU调度,内存管理,进程调度,磁盘I/O)、网络、协议(HTTP,TCP/IP),还是从应用程序代码,数据库调优,中间件配置等方面入手。 单一个中间件又分web中间件(apache、IIS),应用中间件(tomcat、weblogic、webSphere)等,虽然都是中间件,每一样拎出来往深了学都不是一朝一夕之功。但调优对于每一项的要求又不仅仅是“知道”或“会使用”这么简单。起码要达到“如何更好的使用”。 常看到性能测试书中说,性能测试不单单是性能测试工程师一个人的事儿。需要DBA 、开发人员、运维人员的配合完成。但是在不少情况下性能测试是由性能测试人员独立完成的,退一步就算由其它人员的协助,了解系统架构的各个模块对于自身的提高也有很大帮助,同进也更能得到别人的尊重。 再说性能调优之前,我们有必要再提一下进行测试的目的,或者我们进行性能测试的初衷是什么? 能力验证:验证某系统在一定条件具有什么样的能力。 能力规划:如何使系统达到我们要求的性能能力。 应用程序诊断:比如内存泄漏,通过功能测试很难发现,但通过性能测试却很容易发现。 性能调优:满足用户需求,进一步进行系统分析找出瓶颈,优化瓶颈,提高系统整体性能。 一、一般系统的瓶颈 性能测试调优需要先发现瓶颈,那么系统一般会存在哪些瓶颈: 1、硬件上的性能瓶颈:

一般指的是CPU、内存、磁盘I/O 方面的问题,分为服务器硬件瓶颈、网络瓶颈(对局域网可以不考虑)、服务器操作系统瓶颈(参数配置)、中间件瓶颈(参数配置、数据库、web服务器等)、应用瓶颈(SQL 语句、数据库设计、业务逻辑、算法等)。 2、应用软件上的性能瓶颈: 一般指的是应用服务器、web 服务器等应用软件,还包括数据库系统。 例如:中间件weblogic 平台上配置的JDBC连接池的参数设置不合理,造成的瓶颈。 3、应用程序上的性能瓶颈: 一般指的是开发人员新开发出来的应用程序。 例如,程序架构规划不合理,程序本身设计有问题(串行处理、请求的处理线程不够),造成系统在大量用户方位时性能低下而造成的瓶颈。 4、操作系统上的性能瓶颈: 一般指的是windows、UNIX、Linux等操作系统。 例如,在进行性能测试,出现物理内存不足时,虚拟内存设置也不合理,虚拟内存的交换效率就会大大降低,从而导致行为的响应时间大大增加,这时认为操作系统上出现性能瓶颈。 5、网络设备上的性能瓶颈: 一般指的是防火墙、动态负载均衡器、交换机等设备。 例如,在动态负载均衡器上设置了动态分发负载的机制,当发现某个应用服务器上的硬件资源已经到达极限时,动态负载均衡器将后续的交易请求发送到其他负载较轻的应用服务器上。在测试时发现,动态负载均衡器没有起到相应的作用,这时可以认为网络瓶颈。 性能测试出现的原因及其定位十分复杂,这里只是简单介绍常见的几种瓶颈类型和特征,而性能测试所需要做的就是根据各种情况因素综合考虑,然后协助开发人员/DBA/运维人员一起定位性能瓶颈。 二、一般性能调优步骤 一般性能问题调优的步骤: 1、步骤一:确定问题 应用程序代码:在通常情况下,很多程序的性能问题都是写出来的,因此对于发现瓶颈的模块,应该首先检查一下代码。

LINUX内核参数优化

linux内核参数优化 Sysctl命令及linux内核参数调整 一、Sysctl命令用来配置与显示在/proc/sys目录中的内核参数.如果想使参数长期保存,可以通过编辑/etc/sysctl.conf文件来实现。 命令格式: sysctl[-n][-e]-w variable=value sysctl[-n][-e]-p(default/etc/sysctl.conf) sysctl[-n][-e]–a 常用参数的意义: -w临时改变某个指定参数的值,如 #sysctl-w net.ipv4.ip_forward=1 -a显示所有的系统参数 -p从指定的文件加载系统参数,默认从/etc/sysctl.conf文件中加载,如:#echo1>/proc/sys/net/ipv4/ip_forward #sysctl-w net.ipv4.ip_forward=1 以上两种方法都可能立即开启路由功能,但如果系统重启,或执行了#service network restart 命令,所设置的值即会丢失,如果想永久保留配置,可以修改/etc/sysctl.conf 文件,将net.ipv4.ip_forward=0改为net.ipv4.ip_forward=1 二、linux内核参数调整:linux内核参数调整有两种方式 方法一:修改/proc下内核参数文件内容,不能使用编辑器来修改内核参数文件,理由是由于内核随时可能更改这些文件中的任意一个,另外,这些内核参数文件都是虚拟文件,实际中不存在,因此不能使用编辑器进行编辑,而是使用echo 命令,然后从命令行将输出重定向至/proc下所选定的文件中。如:将timeout_timewait参数设置为30秒: #echo30>/proc/sys/net/ipv4/tcp_fin_timeout 参数修改后立即生效,但是重启系统后,该参数又恢复成默认值。因此,想永久更改内核参数,需要修改/etc/sysctl.conf文件

linux性能调优篇

TOP命令的掌握 top命令经常用来监控linux的系统状况,比如cpu、内存的使用,程序员基本都知道这个命令,但比较奇怪的是能用好它的人却很少,例如top监控视图中内存数值的含义就有不少的曲解。 Top衍生出iftop 和iotop Iftop可以用来监控网卡的实时流量(可以指定网段)、反向解析IP、显示端口信息等,详细的将会在后面的使用参数中说明。 Iotop命令是专门显示每个进程的IO的命令,界面风格类似top命令。这个命令只有在kernelv2.6.20及以后的版本中才有,而iostat是显示每个硬盘的总体IO 本文通过一个运行中的WEB服务器的top监控截图,讲述top视图中的各种数据的含义,还包括视图中各进程(任务)的字段的排序。 top进入视图 top视图01 【top视图01】是刚进入top的基本视图,我们来结合这个视图讲解各个数据的含义。 第一行: 10:01:23 —当前系统时间

126 days, 14:29 —系统已经运行了126天14小时29分钟(在这期间没有重启过) 2 users —当前有2个用户登录系统 load average: 1.15, 1.42, 1.44 — load average后面的三个数分别是1分钟、5分钟、15分钟的负载情况。 load average 见下文 第二行: Tasks —任务(进程),系统现在共有183个进程,其中处于运行中的有1个,182个在休眠(sleep),stoped 状态的有0个,zombie状态(僵尸)的有0个。 第三行:cpu状态 6.7% us —用户空间占用CPU的百分比。 0.4% sy —内核空间占用CPU的百分比。 0.0% ni —改变过优先级的进程占用CPU的百分比 92.9% id —空闲CPU百分比 0.0% wa — IO等待占用CPU的百分比 0.0% hi —硬中断(Hardware IRQ)占用CPU的百分比 0.0% si —软中断(Software Interrupts)占用CPU的百分比 第四行:内存状态 8306544k total —物理内存总量(8GB) 7775876k used —使用中的内存总量(7.7GB) 530668k free —空闲内存总量(530M) 79236k buffers —缓存的内存量(79M) 第五行:swap交换分区 2031608k total —交换区总量(2GB) 2556k used —使用的交换区总量(2.5M) 2029052k free —空闲交换区总量(2GB) 4231276k cached —缓冲的交换区总量(4GB) 这里要说明的是不能用windows的内存概念理解这些数据,如果按windows的方式此台服务器“危矣”:8G的内存总量只剩下530M的可用内存。Linux的内存管理有其特殊性,复杂点需要一本书来说明,这里只是简单说点和我们传统概念(windows)的不同。 第四行中使用中的内存总量(used)指的是现在系统内核控制的内存数,空闲内存总量(free)是内核还未纳入其管控范围的数量。纳入内核管理的内存不见得都在使用中,还包括过去使用过的现在可以被重复利用的内存,内核并不把这些可被重新使用的内存交还到free中去,因此在linux上free内存会越来越少,但不用为此担心。 如果出于习惯去计算可用内存数,这里有个近似的计算公式:第四行的free + 第四行的buffers + 第五行的cached,按这个公式此台服务器的可用内存:530668+79236+4231276 = 4.7GB。 对于内存监控,在top里我们要时刻监控第五行swap交换分区的used,如果这个数值在不断的变化,说明内核在不断进行内存和swap的数据交换,这是真正的内存不够用了。

Linux应用部署与性能调优(weblogic)

一、出现sun.io.MalformedInputException sun.io.ByteToCharUTF8.convert问题的原因: 是因为操作系统没有中文字符集的支持。如果操作系统不安装中文字符集,则将所有XML 文件的纺码格式改为UTF-8 二、在Eclipse中修改XML文件的编码格式为UTF-8。 在菜单栏中:Window->Preferences ->General ->Content Types 注意:修改后要点击右边的Update按钮。 三、在Linux中如何查看当前环境支持的字符集 在窗口的命令提示符下输入: echo $LANG 四、如何查看当前机器中的weblogic进程 在命令提示符下输入: ps -ef | grep weblogic 杀掉指定的进程 kill -9 进程PID 如 kill -9 6634

Cd / Cd home/bea/user_projects/domains/tjcxybDomain/ http://172.15.254.1:7001/console/ /home/bea/user_projects/domains/tjcxybDomain/appServer4/.wlnotdelete/extract/ tjcxyb /home/bea/user_projects/domains/tjcxybDomain/appServer4/stage 五、如何启动weblogic服务器 在命令提示符下输入: ./要执行的启动文件.sh 如:./startWebLogic.sh 停止webLogic就执行webLogic的停止命令。 如:./stopWebLogic.sh 执行完后用ps命令查看weblogic进程是否还存在。如果还存在的话,用kill -9 来杀掉你要停止的weblogic进程。在杀进程时一定要看清你所要杀的weblogic的进程id,因为一台机器上有可能会运行多个weblogic 六、部署和发布应用 在部署新应用之前请一定要删除你的老应用。先在IE的weblogic管理控制台删除你的应用。然后用FTP连接服务器,查看domain下的server目录下的.wlnotdelete目录中是否还存在你的应用,.wlnotdelete的extract目录下是否存在你的就用;applications目录下是否还存在你的应用。如果存在请手工删除。 七、如果手工删除文件失败,怎么办 以root用户登录控制台,然后用chown命令修改提定人的权制。 指令名称: chown 使用权限: root 使用方式: chmod [-cfhvR] [--help] [--version] user[:group] file... 说明: Linux/Unix 是多人多工作业系统,所有的档案皆有拥有者。利用chown 可以将档案的拥有者加以改变。一般来说,这个指令只有是由系统管理者(root)所使用,一般使用者没有权限可以改变别人的档案拥有者,也没有权限可以自己的档案拥有者改设为别人。只有系统管理者(root)才有这样的权限。 把计: user : 新的档案拥有者的使用者ID group : 新的档案拥有者的使用者群体(group) -c : 若该档案拥有者确实已经更改,才显示其更改动作 -f : 若该档案拥有者无法被更改也不要显示错误讯息 -h : 只对于连结(link)进行变更,而非该link 真正指向的档案 -v : 显示拥有者变更的详细资料 -R : 对目前目录下的所有档案与子目录进行相同的拥有者变更(即以递回的方式逐个变更) --help : 显示辅助说明 --version : 显示版本 范例: 将档案file1.txt 的拥有者设为users 群体的使用者jessie : chown jessie:users file1.txt

相关文档