当前位置:文档之家› LINUX性能调优完全手册(誉天教学整理)

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

LINUX性能调优完全手册(誉天教学整理)
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

在“etc/profile”文件中, 加入一行:

CFLAGS=’-O3 -march=pentium -mcpu=pentium -ffast-math -funroll-loops -fomit-frame-pointer -fforce-

mem -fforce-addr -malign-double -fno-exceptions’

对于CPU i486

在“etc/profile”文件中, 加入一行:

CFLAGS=’-O3 -funroll-all-loops -malign-double -mcpu=i486 -march=i486 -fomit-frame-pointer -fno-exceptions’

在进行完以上设置之后,紧接者着把“CFLAGS LANG LESSCHARSET”加入到“etc/profile”文件中的“export”行中:

export PATH PS1 HOSTNAME HISTSIZE HISTFILESIZE USER LOGNAME MAIL INPUTRC CFLAGS LANG LESSCHARSET

然后,重新登录,这时,环境变量CFLAGS已经被赋值,编译器和其它配置工具可以使用它。对Pentium(Pro/II/III)的优化必须使用egcs或pgcc编译器。Linux的缺省安装中,已经装上了egcs,所以无需担心。

基准测试结果(按体系结构分类):

由于CPU的体系结构和使用的gcc/egcs的版本不同,优化选项也会不同。下面的图表可以帮助你根据自己的CPU和编译器,选择最佳的编译选项。

Redhat 6.1中安装的编译器的版本是egcs 2.91.66,但是,即使你安装的就是Redhat 6.1,在选择编译选项之前也务必检查一下编译器的版本.

为了确认编译器的版本,使用如下命令:

[root@deep]# egcs --version。

注意:所有的测试结果可以从GCC的主页: https://www.doczj.com/doc/5a9766734.html,/上检索到。

现举例说明:

对于CPU pentium II/III(i686),安装了egcs-2.91.66,最佳的编译选项是:

CFLAGS=’-O9 -funroll-loops -ffast-math -malign-double -mcpu=pentiumpro -march=pentiumpro -fomit-frame-pointer -fno-exceptions’

对于CPU pentium (i586),安装了egcs-2.91.66,最佳的编译选项是:

CFLAGS=’-O3 -march=pentium -mcpu=pentium -ffast-math -funroll-loops -fomit-frame-pointer -fforce-mem -fforce-addr -malign-double -fno-exceptions’

对于 CPU i486,安装了egcs-2.91.66,最佳的编译选项是:

CFLAGS=’-O3 -funroll-all-loops -malign-double -mcpu=i486 -march=i486 -fomit-frame-pointer -fno-exceptions’

-funroll-loops选项

对“loop unrolling”进行优化,只对在编译或运行时循环次数能确定的循环语句有效。

-funroll-all-loops

对“loop unrolling”进行优化,对所有的循环语句有效,担通常使程序运行变慢。

-ffast-math

该选项使GCC可以不遵从ANSI或IEEE的规则,以获得运行更快的优化代码。例如:它允许编译器假设sqrt()函数的输入参数非负以及所有的浮点数的值都是NaNs。

-malign-double

GCC把double, long double, and long long类型变量定界在双字还是单字边界上,由该选项控制。double类型变量定界于双字边界时,产生的代码在Pentium机器上可以运行得更快一些,但是会占用更多的内存。

-mcpu=cpu_type

设定在生成指令时缺省的机器和CPU类型,设定好某一特定的CPU类型后,编译器将针对这种芯片产生相应的指令,如果不使用“-march=cpu_type”选项,编译器不会产生任何不能在i386上运行的代码。“i586”等价于“pentium”,“i686”等价于“pentiumpro”,“k6”指明是使用AMD的芯片而非Intel系列。

-march=cpu_type

为指定类型的机器和CPU产生指令。这里的CPU类型与“-mcpu”中列出的相同。而且,使用本选项已经隐含了“-mcpu=cpu_type”选项。

-fforce-mem

对于涉及内存操作的运算,强制把操作数拷贝到寄存器中。这是通过把所有的内存引用转换成潜在的普通子表达式,以获得优化代码。如果,这些内存引用不是普通子表达式,可以通过指

令的组合,消除单独的寄存器装载。

-fforce-addr

运算前把内存地址常数拷贝到寄存器中。所产生的优化代码与选项“-fforce-mem”类似。

-fomit-frame-pointer

对于不必要的框架指针(frame pointer),不在寄存器中保存。这就避免了相应的用于保存、设置和恢复框架指针所需的指令;这样,许多函数中可以使用额外的寄存器。但是,这一选项使得在大多数机器上无法进行调试。

注意:本书将要讨论的所有优化,缺省都是针对Pentium II/III 系列CPU。因此,如有必要,对于某些专门的CPU需要调整编译参数。

2. “bdflush”参数

下文讨论目录“/proc/sys/vm”下的系统控制文件,且只在Linux内核版本2.2下有效。控制该目录下的文件,可以调整Linux内核子系统--虚拟内存(VM)的行为,其中bdflush文件对于硬盘使用有一定影响。该文件控制了bdflush内核守护进程的行为。我们通常使用以下命令来提高文件系统的性能:

echo "100 1200 128 512 15 5000 500 1884 2">/proc/sys/vm/bdflush

修改某些值,可以使系统响应更快,例如:可以使系统在写入硬盘之前等待更长时间,从而避免了一些硬盘访问的冲突。

把该命令加入文件“etc/rc.d/rc.local”之中,每次重新启动机器时,就不必再次手工敲入这条命令了。

如果需要进一步理解如何改进有关虚拟内存、硬盘缓冲和交换空间(swap)的内核参数,可以参照“/usr/src/linux/Documentation/sysctl/vm.txt”。

3. “ip_local_port_range”参数

下文讨论目录“/proc/sys/net/ipv4/ip_local_port_range”下的系统控制文件,且只在Linux内核版本2.2下有效。

“ip_local_port_range”文件中有两个参数分别定义了用作TCP和UDP本地端口的端口范围。第一个参数是第一个端口号。第二个参数是最后一个本地端口号。对于使用率很高的系统,可以修改为:32768到61000。

echo *32768 61000* > /proc/sys/net/ipv4/ip_local_port_range

把该命令加入文件“/etc/rc.d/rc.local”之中,每次重新启动机器时,就不必再次手工敲入这条命令了。

4. “/etc/nsswitch.conf”文件

“etc/nsswitch.conf”文件定义了系统使用哪些服务来解析主机名、获得口令文件和组文件(group file)。我们的系统中由于没有使用NIS服务,因此口令文件和组文件我们没有使用。这里,我们只讨论该文件中的hosts这一行。

编辑“nsswitch.conf”文件(vi /etc/nsswitch.conf),把host一行改为:

"hosts: dns files"

含义:当请求解析地址时,首先访问DNS服务器,如果DNS服务器没有响应,则使用“/etc/hosts”文件。

我建议把该文件中每一行中的NIS都删掉。当然,如果你一定要使用NIS,就不能删掉NIS。最后,这个文件会是这样:

passwd: files

shadow: files

group: files

hosts: dns files

bootparams: files

ethers: files

netmasks: files

networks: files

protocols: files

rpc: files

services: files

automount: files

aliases: files

5. “/proc”文件系统

下文讨论目录“proc/sys/fs”下的系统控制文件,且只在Linux内核版本2.2下有效。该目录下的文件可以用来调整和监测Linux内核的一些行为。对这些文件的误操作可能搅乱系统,因此在实际调整系统之前,最好把文档和源代码都读一下。

适当的增加“/proc/sys/fs/file-max”的值:每4M内存对应256,例如:内存为128M的机器,该值可以设为8192(128/4=32 32*256=8192)。同理,可以增加“/proc/sys/fs/inode-max”的值,使其值为打开文件数目的3到4倍(8192*4=32768)。这是因为:i节点的数目至少等于打开的文件数,一般而言,对于大文件,i节点数远大于打开的文件数目。

用于改变/proc目录及其子目录下的任意参数的常用命令是(必须以root登录): echo “新的参数值”> “/proc/所需更改的文件”,对于上面所涉及的修改,其命令为:

echo "8192" >/proc/sys/fs/file-max

echo "32768" >/proc/sys/fs/inode-max

上文所讨论的方法修改了内核源代码的常数。但是,在新的内核源代码树中并不能起作用,因此还不能算是最好的方法。最好的一种方法是把上述命令加入文件“etc/rc.d/rc.local”之中。在该文件的最后加入以下两行(假设系统有128M内存):

echo "8192" >/proc/sys/fs/file-max

echo "32768" >/proc/sys/fs/inode-max

其中的数值因系统不同,差异很大,应该根据各自系统,按照上述的公式计算。一台文件服务器或WEB服务器需要打开的文件数目就很大,而用于数值的服务器该数值就较小。

对于内存非常多的系统,特别是512M或更多内存的系统,打开的文件数和i节点数最好不要超过50,000和150,000。

“file-max”参数是指Linux内核可以分配的文件句柄的最大数目。当系统经常报错:文件句柄不够时,就需要适当增大该参数的值。系统缺省值为:4096。

“inode-max”参数是指系统i节点句柄的最大数目。其值应该是file-max值的3到4倍。因为标准输入输出文件和网络套接字都要使用i节点来进行处理。如果系统经常性的出现i节点被耗尽的情况,就需要增大其值。

6. “ulimit”参数

Linux本身对每个用户拥有的最大进程数有限制。可以在用户根目录下的“.bashrc”文件或者实际使用与“.bashrc”功能相当的shell的脚本中加入这种限制。编辑“.bashrc”文件(例如:vi /root/.bashrc)并加入下面一行:

ulimit -u unlimited

然后退出,重新登录。为了验证,可以以root身份登录,然后键入:“ulimit –a”,在最大用户进程数一项中应该显示“unlimited”,例如:

[root@deep]# ulimit -a

core file size (blocks) 1000000

data seg size (kbytes) unlimited

file size (blocks) unlimited

max memory size (kbytes) unlimited

stack size (kbytes) 8192

cpu time (seconds) unlimited

max user processes unlimited * this line.

pipe size (512 bytes) 8

open files 1024

virtual memory (kbytes) 2105343

注意:你可能更倾向于在命令行键入“unlimit –u”而不是把它加入到文件“/root/.bashrc”中。但为保险起见,建议还是把它加入文件“/root/.bashrc”中。

7. 增加系统打开的文件数目

增加当前进程打开文件的数目。RedHat 6.0(内核2.2.5)中,用这种方法进程可以至少打开31000个文件描述符;内核版本为2.2.12中,可以至少打开90000个文件描述符(在适当的限制下)。它的上限仅受限于可用内存。

编辑“.bashrc”文件(例如:vi /root/.bashrc)并加入下面一行:

ulimit -n 90000

然后退出,重新登录。为了验证,可以以root身份登录,然后键入“ulimit –a”,在打开文件数一项中应该显示“90000”,例如:

[root@deep]# ulimit -a

core file size (blocks) 1000000

data seg size (kbytes) unlimited

file size (blocks) unlimited

max memory size (kbytes) unlimited

stack size (kbytes) 8192

cpu time (seconds) unlimited

max user processes unlimited

pipe size (512 bytes) 8

open files 90000 * this line.

virtual memory (kbytes) 2105343

注意:在早于2.2版内核的系统中,即使进行了上述修改,每个进程所能打开的文件数目仍然限制为1024。

8. 文件“atime”属性

Linux除了记录文件的创建和修改时间外,还记录文件最近的访问时间。该信息作用不大,但为保留它,系统需要消耗相应的资源。ext2文件系统允许超级用户对单个文件进行标记,以忽略对这条信息的记录。

这种优化调整,对于文件查找操作,系统性能提高显著,另外,对于需要经常访问的文件(如:/var/spool/news)也是很有用的。设置该属性的命令为:

[root@deep]# chattr +A filename

若需要对某个目录下的所有文件进行这种设置,可以使用:

[root@deep /root]# chattr -R +A /var/spool/

[root@deep /root]# chattr -R +A /cache/

[root@deep /root]# chattr -R +A /home/httpd/ona/

9. 文件的“noatime”属性

Linux在mount文件系统时,可以使用“noatime”选项。并可以在文件“/etc/fstab”的mount 选项区域中加入。当含有该选项的

文件系统被挂入(mount)系统时,对该文件系统中的文件的读访问,不再更新文件的atime 信息。一般情况下,atime信息没有用,所以不更新该域并无大碍。这一选项的重要性在于:当只对文件进行读操作时,不再需要向文件系统中该文件的相应区域写入信息。因为写入操作的开销某种意义下是昂贵的,因此该选项可以获得明显的性能的改善。该选项对于文件的wtime属性没有影响,每次文件写操作时,都会更新文件的wtime信息。

编辑“fstab”文件(vi /etc/fstab)并且加入如下一行(举例说明):

E.I: /dev/sda7 /chroot ext2 defaults,noatime 1 2

重新启动系统, 然后用以下命令测试结果:

[ root@deep ]# reboot

[ root@deep ]# cat /proc/mounts

10. 特定的TCP/IP栈

RedHat Linux , 一般情况下,并不优化 TCP/IP 窗口大小。这能使系统性能的差别很大。如需更多的信息,参阅:RFC 1106 - High Latency WAN links - Section 4.1 and RFC 793 - Transmission Control Protocol。

编辑文件“/etc/sysconfig/network-scripts/ifup”,在110、112、117、125和134行,有:

110: "route add -net ${NETWORK} netmask ${NETMASK} ${DEVICE}"

112: "route add -host ${IPADDR} ${DEVICE}"

117: "route add default gw ${GATEWAY} metric 1 ${DEVICE}"

125: "route add default gw ${GATEWAY} ${DEVICE}"

134: "route add default gw $gw ${DEVICE}"

修改为:

110: "route add -net ${NETWORK} netmask ${NETMASK} window 8192 ${DEVICE}"

112: "route add -host ${IPADDR} window 8192 ${DEVICE}"

117: "route add default gw ${GATEWAY} window 8192 metric 1 ${DEVICE}"

125: "route add default gw ${GATEWAY} window 8192 ${DEVICE}"

134: "route add default gw $gw window 8192 ${DEVICE}"

11. 交换分区

尽量把交换分区放在硬盘的开始区域。硬盘的开始区域物理上位于硬盘柱面的外环部分,因此硬盘的每转能在这一部分读写更多的信息。我曾经见过,在运行命令“hdparm –t”时,把交换分区放在硬盘的结尾部分市,系统的读写速度比放在硬盘的开始部分低3MB/s。

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.doczj.com/doc/5a9766734.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.doczj.com/doc/5a9766734.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.doczj.com/doc/5a9766734.html,/bird67/article/details/199686592014本文摘自: https://www.doczj.com/doc/5a9766734.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

相关主题
文本预览
相关文档 最新文档