当前位置:文档之家› linux中的weblogic性能调优

linux中的weblogic性能调优

linux中的weblogic性能调优
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

net.ipv4.tcp_rmem=8196 128388607 128388607 最小默认最大net.ipv4.tcp_wmem=8196 128388607 128388607

net.ipv4.tcp_keepalive_time=1800

tcp_keepalive_time 值控制TCP/IP 尝试验证空闲连接是否完好的频率。如果这段时间内没有活动,则会发送保持活动信号。如果网络工作正常,而且接收方是活动的,它就会响应。如果需要对丢失接收方敏感,换句话说,需要更快地发现丢失了接收方,请考虑减小这个值。如果长期不活动的空闲连接出现次数较多,而丢失接收方的情况出现较少,您可能会要提高该值以减少开销。

缺省情况下,如果空闲连接7200 秒(2 小时)内没有活动,Linux 就发送保持活动的消息。通常,1800 秒是首选值,从而一半的已关闭连接会在30 分钟内被检测到。

timeout_timewait

timeout_timewait 值确定了在 TCP/IP 可释放已关闭的连接并复

用其资源之前,必须等待的时间。关闭和释放之间的时间间隔称为TIME_WAIT 状态或最长分段生命周期的两倍(2MSL)状态。在此期间,重新打开客户机和服务器之间的连接比新建一个连接的开销要小。通过减小该项的值,TCP/IP 可更快地释放已关闭的连接,并可为新连接提供更多的资源。如果由于多个连接处于 TIME_WAIT 状态导致吞吐量较低,从而正在运行的应用程序需要快速释放连接、创建新的连接或是进行调整,请调整这个参数。缺省值是 240 秒(4 分钟)。最小推荐值是 30 秒

https://www.doczj.com/doc/1b12709954.html,dev_max_backlog=8096

connection backlog

可能需要提高连接储备值,以应对大量突发入局连接请求的情况。

如果同时接收到大量连接请求,使用较大的值会提高受支持的暂挂连接的数量,从而可减少连接失败的数量。请使用以下过程来查看或定制您的值。

echo X > /proc/sys/net/core/netdev_max_backlog

echo X > /proc/sys/net/core/somaxconn

tcp_keepalive_intvl

tcp_keepalive_intvl 值定义了如果未从接收方收到保持活动消息的响应,TCP/IP 重复发送保持活动信号的频率。当连续发送保持活动信号、但未收到响应的次数超出 tcp_keepalive_probes 的值时,

会放弃该连接。如果期望较长的响应时间,您可能需要提高该值以减少开销。如果需要减少花在验证接收方是否已丢失上的时间,请考虑减小该值或 tcp_keepalive_probes 值。缺省情况下,在未收到响应而重新发送保持活动的消息之前,Linux 会等待 75 秒。通常,15 秒是首选值,以便能够较快地检测到丢失了接收方。

请使用以下过程来查看或定制您的值。

echo X > /proc/sys/net/ipv4/tcp_keepalive_intvl

tcp_keepalive_probes

tcp_keepalive_probes 值定义了 TCP/IP 通过现有连接重新发送未返回应答的保持活动的消息次数。如果您的网络性能很差,可能需要提高该值以保持有效的通信。如果您的网络性能很好,可以减小该值以减少验证接收方是否丢失所花费的时间。缺省情况下,在决定放弃该连接之前,Linux 会发送 9 次未返回应答的保持活动的消息。通常,5 次是首选值,以便能够较快地检测到丢失了接收方。

请使用以下过程来查看或定制您的值。

echo X > /proc/sys/net/ipv4/tcp_keepalive_probes

其中 X 由在未返回应答的情况下,期望的用于保持活动的重新传输的次数替换。

net.ipv4.tcp_window_scaling=0

BOOLEAN

缺省值为1

该文件表示设置tcp/ip会话的滑动窗口大小是否可变。参数值为布尔值,为1时表示可变,为0时表示不可变。tcp/ip通常使用的窗口最大可达到65535 字节,对于高速网络,该值可能太小,这时候如果启用了该功能,可以使tcp/ip滑动窗口大小增大数个数量级,从而提高数据传输的能力(RFC 1323)。(对普通地百M网络而言,关闭会降低开销,所以如果不是高速网络,可以考虑设置为0)

net.ipv4.tcp_sack=0

BOOLEAN

缺省值为1

使用Selective ACK﹐它可以用来查找特定的遗失的数据报--- 因此有助于快速恢复状态。该文件表示是否启用有选择的应答(Selective Acknowledgment),这可以通过有选择地应答乱序接收到的报文来提高性能(这样可以让发送者只发送丢失的报文段)。(对于广域网通信来说这个

选项应该启用,但是这会增加对CPU 的占用。)

net.ipv4.tcp_timestamps=0

BOOLEAN

缺省值为1

Timestamps 用在其它一些东西中﹐可以防范那些伪造的sequence 号码。一条1G的宽带线路或许会重遇到带out-of-line数值的旧sequence 号码(假如它是由于上次产生的)。Timestamp 会让它知道这是个'旧封包'。

(该文件表示是否启用以一种比超时重发更精确的方法(RFC 1323)来启用对RTT 的计算;为了实现更好的性能应该启用这个选项。)

net.ipv4.tcp_tw_reuse=1

BOOLEAN

默认值是0

该文件表示是否允许重新应用处于TIME-WAIT状态的socket用于新的TCP连接(这个对快速重启动某些服务,而启动后提示端口已经被使用的

情形非常有帮助)

net.ipv4.tcp_tw_recycle=1

BOOLEAN

默认值是0

打开快速TIME-WAIT sockets 回收。除非得到技术专家的建议或要求﹐请不要随意修改这个值。(做NAT的时候,建议打开它)

net.ipv4.tcp_fin_timeout=30

INTEGER

默认值是60

对于本端断开的socket连接,TCP保持在FIN-WAIT-2状态的时间。对方可能会断开连接或一直不结束连接或不可预料的进程死亡。默认值为60 秒。过去在2.2版本的内核中是180 秒。您可以设置该值﹐但需要注意﹐如果您的机器为负载很重的web服务器﹐您可能要冒内存被大量无效数据报填满的风险﹐FIN-WAIT-2 sockets 的危险性低于FIN-WAIT-1 ﹐因为它们最多只吃1.5K 的内存﹐但是它们存在时间更长。另外参考tcp_max_orphans。(事实上做NA T的时候,降低该值也是好处显著的,我本人的网络环境中降低该值为30)

其他参数请参考附录

二.Weblogic调整

主要从以下几个方面调整:

模式:选择产品模式,同时选择JRocket

内存参数:设置Weblogic内存大小:set MEM_ARGS=-Xms1024m -Xmx1024m 最大和最小设置一致

日志等级:Warning

HTTP访问日志:关

JDBC POOL:

Row Prefetch Enabled

Initial Capacity

Maximum Capacity (与Initial Capacity设置一致)

Statement Cache Size

Test Frequency

Turning:Enable Native IO

对需要长时处理的业务,如果出stuck thread警告,需要调整stuck-second 参数,适当加长。

如果出现拒绝连接的错误,适当增加accept-backlog时间,增加接受缓存

队列的长度

三.附录

1.linux内核TCP相关参数解释

tcp_syn_retries:INTEGER

默认值是5

对于一个新建连接,内核要发送多少个SYN 连接请求才决定放弃。不应该大于

255,默认值是5,对应于180秒左右时间。(对于大负载而物理通信良好的网络而

言,这个值偏高,可修改为 2.这个值仅仅是针对对外的连接,对进来的连接,是由tcp_retries1决定的)

tcp_synack_retries:INTEGER

默认值是5

对于远端的连接请求SYN,内核会发送SYN +ACK数据报,以确认收到上一个

SYN连接请求包。这是所谓的三次握手( threeway handshake)机制的第二个步骤。这里决定内核在放弃连接之前所送出的SYN+ACK 数目。不应该大于255,默认值

是5,对应于180秒左右时间。(可以根据上面的tcp_syn_retries来决定这个值)

tcp_keepalive_time:INTEGER

默认值是7200(2小时)

当keepalive打开的情况下,TCP发送keepalive消息的频率。(由于目前网络攻击等因素,造成了利用这个进行的攻击很频繁,曾经也有cu 的朋友提到过,说如果2边建立了连接,然后不发送任何数据或者rst/fin消息,那么持续的时间是不是就是2小时,

空连接攻击?tcp_keepalive_time就是预防此情形的.我个人在做nat服务的时候的修

改值为1800秒)

tcp_keepalive_probes:INTEGER

默认值是9

TCP发送keepalive探测以确定该连接已经断开的次数。(注意:保持连接仅在

SO_KEEPALIVE套接字选项被打开是才发送.次数默认不需要修改,当然根据情形也

可以适当地缩短此值.设置为5比较合适)

tcp_keepalive_intvl:INTEGER

默认值为75

探测消息发送的频率,乘以tcp_keepalive_probes就得到对于从开始探测以来没有响应的连接杀除的时间。默认值为75秒,也就是没有活动的连接将在大约11分钟以后将被丢弃。(对于普通应用来说,这个值有一些偏大,可以根据需要改小.特别是web类服务器需要改小该值,15是个比较合适的值)

tcp_retries1:INTEGER

默认值是3

放弃回应一个TCP连接请求前﹐需要进行多少次重试。RFC 规定最低的数值是3﹐这也是默认值﹐根据RTO的值大约在3秒- 8分钟之间。(注意:这个值同时还决定进入的syn连接)

tcp_retries2:INTEGER

默认值为15

在丢弃激活(已建立通讯状况)的TCP连接之前﹐需要进行多少次重试。默认值为15,根据RTO的值来决定,相当于13-30分钟(RFC1122规定,必须大于100秒).(这个值根据目前的网络设置,可以适当地改小,我的网络内修改为了5)

tcp_orphan_retries:INTEGER

默认值是7

在近端丢弃TCP连接之前﹐要进行多少次重试。默认值是7个﹐相当于50秒- 16分钟﹐视RTO 而定。如果您的系统是负载很大的web服务器﹐那么也许需要降低该值﹐这类sockets 可能会耗费大量的资源。另外参的考tcp_max_orphans。(事实上做NA T的时候,降低该值也是好处显著的,我本人的网络环境中降低该值为3) tcp_fin_timeout:INTEGER

默认值是60

对于本端断开的socket连接,TCP保持在FIN-WAIT-2状态的时间。对方可能会断开连接或一直不结束连接或不可预料的进程死亡。默认值为60 秒。过去在2.2版本的内核中是180 秒。您可以设置该值﹐但需要注意﹐如果您的机器为负载很重的web服务器﹐您可能要冒内存被大量无效数据报填满的风险﹐FIN-WAIT-2 sockets 的危险性低于FIN-WAIT-1 ﹐因为它们最多只吃1.5K 的内存﹐但是它们存在时间更长。另外参考tcp_max_orphans。(事实上做NA T的时候,降低该值也是好处显著的,我本人的网络环境中降低该值为30)

tcp_max_tw_buckets:INTEGER

默认值是180000

系统在同时所处理的最大timewait sockets 数目。如果超过此数的话﹐time-wait socket 会被立即砍除并且显示警告信息。之所以要设定这个限制﹐纯粹为了抵御那些简单的DoS 攻击﹐千万不要人为的降低这个限制﹐不过﹐如果网络条件需要比默认值更多﹐则可以提高它(或许还要增加内存)。(事实上做NA T的时候最好可以适当地增加该值)

tcp_tw_recycle:BOOLEAN

默认值是0

打开快速TIME-WAIT sockets 回收。除非得到技术专家的建议或要求﹐请不要随意修改这个值。(做NA T的时候,建议打开它)

tcp_tw_reuse:BOOLEAN

默认值是0

该文件表示是否允许重新应用处于TIME-WAIT状态的socket用于新的TCP连接(这个对快速重启动某些服务,而启动后提示端口已经被使用的情形非常有帮助)

tcp_max_orphans:INTEGER

缺省值是8192

系统所能处理不属于任何进程的TCP sockets最大数量。假如超过这个数量﹐那么不属于任何进程的连接会被立即reset,并同时显示警告信息。之所以要设定这个限制﹐纯粹为了抵御那些简单的DoS 攻击﹐千万不要依赖这个或是人为的降低这个限制(这个值Redhat AS版本中设置为32768,但是很多防火墙修改的时候,建议该值修改为2000)

tcp_abort_on_overflow:BOOLEAN

缺省值是0

当守护进程太忙而不能接受新的连接,就象对方发送reset消息,默认值是false。这意味着当溢出的原因是因为一个偶然的猝发,那么连接将恢复状态。只有在你确信守护进程真的不能完成连接请求时才打开该选项,该选项会影响客户的使用。(对待已经满载的sendmail,apache这类服务的时候,这个可以很快让客户端终止连接,可以给予服务程序处理已有连接的缓冲机会,所以很多防火墙上推荐打开它)

tcp_syncookies:BOOLEAN

默认值是0

只有在内核编译时选择了CONFIG_SYNCOOKIES时才会发生作用。当出现syn等候队列出现溢出时象对方发送syncookies。目的是为了防止syn flood攻击。

注意:该选项千万不能用于那些没有收到攻击的高负载服务器,如果在日志中出现synflood消息,但是调查发现没有收到synflood攻击,而是合法用户的连接负载过高的原因,你应该调整其它参数来提高服务器性能。参考:

tcp_max_syn_backlog

tcp_synack_retries

tcp_abort_on_overflow

syncookie严重的违背TCP协议,不允许使用TCP扩展,可能对某些服务导致严重的性能影响(如SMTP转发)。(注意,该实现与BSD 上面使用的tcp proxy一样,是违反了RFC中关于tcp连接的三次握手实现的,但是对于防御syn-flood的确很有用.) tcp_stdurg:BOOLEAN

默认值为0

使用TCP urg pointer 字段中的主机请求解释功能。大部份的主机都使用老旧的BSD解释,因此如果您在Linux 打开它﹐或会导致不能和它们正确沟通。

tcp_max_syn_backlog:INTEGER

对于那些依然还未获得客户端确认的连接请求﹐需要保存在队列中最大数目。对于超过128Mb 内存的系统﹐默认值是1024 ﹐低于128Mb 的则为128。如果服务器经常出现过载﹐可以尝试增加这个数字。警告﹗假如您将此值设为大于1024﹐最好修改include/net/tcp.h里面的TCP_SYNQ_HSIZE﹐以保持TCP_SYNQ_HSIZE*16(SYN Flood攻击利用TCP协议散布握手的缺陷,伪造虚假源IP地址发送大量TCP-SYN半打开连接到目标系统,最终导致目标系统Socket 队列资源耗尽而无法接受新的连接。为了应付这种攻击,现代Unix系统中普遍采用多连接队列处理的方式来缓冲(而不是解决)这种攻击,是用一个基本队列处理正常的完全连接应用(Connect()和Accept() ),是用另一个队列单独存放半打开连接。这种双队列处理方式和其他一些系统内核措施(例如Syn-Cookies/Caches)联合应用时,能够比较有效的缓解小规模的SYN Flood攻击(事实证明)

tcp_window_scaling :INTEGER

缺省值为1

该文件表示设置tcp/ip会话的滑动窗口大小是否可变。参数值为布尔值,为1时表示可变,为0时表示不可变。tcp/ip通常使用的窗口最大可达到65535 字节,对于高速网络,该值可能太小,这时候如果启用了该功能,可以使tcp/ip滑动窗口大小增大数个数量级,从而提高数据传输的能力(RFC 1323)。(对普通地百M网络而言,关闭会降低开销,所以如果不是高速网络,可以考虑设置为0)

tcp_timestamps :BOOLEAN

缺省值为1

Timestamps 用在其它一些东西中﹐可以防范那些伪造的sequence 号码。一条1G 的宽带线路或许会重遇到带out-of-line数值的旧sequence 号码(假如它是由于上次产生的)。Timestamp 会让它知道这是个'旧封包'。(该文件表示是否启用以一种比超时重发更精确的方法(RFC 1323)来启用对RTT 的计算;为了实现更好的性能应该启用这个选项。)

tcp_sack :BOOLEAN

缺省值为1

使用Selective ACK﹐它可以用来查找特定的遗失的数据报--- 因此有助于快速恢复状态。该文件表示是否启用有选择的应答(Selective Acknowledgment),这可以通过有选择地应答乱序接收到的报文来提高性能(这样可以让发送者只发送丢失的报文段)。(对于广域网通信来说这个选项应该启用,但是这会增加对CPU 的占用。)

tcp_fack :BOOLEAN

缺省值为1

打开FACK拥塞避免和快速重传功能。(注意,当tcp_sack设置为0的时候,这个值即使设置为1也无效)

tcp_dsack :BOOLEAN

缺省值为1

允许TCP发送"两个完全相同"的SACK。

tcp_ecn :BOOLEAN

缺省值为0

打开TCP的直接拥塞通告功能。

tcp_reordering :INTEGER

默认值是3

TCP流中重排序的数据报最大数量。(一般有看到推荐把这个数值略微调整大一些,比如5)

tcp_retrans_collapse :BOOLEAN

缺省值为1

对于某些有bug的打印机提供针对其bug的兼容性。(一般不需要这个支持,可以关闭它)

tcp_wmem(3个INTEGER变量):min, default, max

min:为TCP socket预留用于发送缓冲的内存最小值。每个tcp socket都可以在建议以后都可以使用它。默认值为4096(4K)。

default:为TCP socket预留用于发送缓冲的内存数量,默认情况下该值会影响其它协议使用的net.core.wmem_default 值,一般要低于net.core.wmem_default的值。默认值为16384(16K)。

max: 用于TCP socket发送缓冲的内存最大值。该值不会影响net.core.wmem_max,"静态"选择参数SO_SNDBUF则不受该值影响。默认值为131072(128K)。(对于服务器而言,增加这个参数的值对于发送数据很有帮助,在我的网络环境中,修改为了51200 131072 204800)

tcp_rmem (3个INTEGER变量):min, default, max

min:为TCP socket预留用于接收缓冲的内存数量,即使在内存出现紧张情况下tcp socket都至少会有这么多数量的内存用于接收缓冲,默认值为8K。

default:为TCP socket预留用于接收缓冲的内存数量,默认情况下该值影响其它协议使用的net.core.wmem_default 值。该值决定了在tcp_adv_win_scale、tcp_app_win和tcp_app_win=0默认值情况下,TCP窗口大小为65535。默认值为87380

max:用于TCP socket接收缓冲的内存最大值。该值不会影响net.core.wmem_max,"静态"选择参数SO_SNDBUF则不受该值影响。默认值为128K。默认值为87380*2 bytes。(可以看出,.max的设置最好是default的两倍,对于NAT来说主要该增加它,我的网络里为51200 131072 204800)

tcp_mem(3个INTEGER变量):low, pressure, high

low:当TCP使用了低于该值的内存页面数时,TCP不会考虑释放内存。(理想情况下,这个值应与指定给tcp_wmem 的第 2 个值相匹配- 这第 2 个值表明,最大页面大小乘以最大并发请求数除以页大小(131072 * 300 / 4096)。) pressure:当TCP使用了超过该值的内存页面数量时,TCP试图稳定其内存使用,进入pressure模式,当内存消耗低于low 值时则退出pressure状态。(理想情况下这个值应该是TCP 可以使用的总缓冲区大小的最大值(204800 * 300 / 4096)。) high:允许所有tcp sockets用于排队缓冲数据报的页面量。(如果超过这个值,TCP 连接将被拒绝,这就是为什么不要令其过于保守(512000 * 300 / 4096) 的原因了。在这种情况下,提供的价值很大,它能处理很多连接,是所预期的 2.5 倍;或者使现有连接能够传输2.5 倍的数据。我的网络里为192000 300000 732000)

一般情况下这些值是在系统启动时根据系统内存数量计算得到的。

tcp_app_win : INTEGER

默认值是31

保留max(window/2^tcp_app_win, mss)数量的窗口由于应用缓冲。当为0时表示不需要缓冲。

tcp_adv_win_scale : INTEGER

默认值为2

计算缓冲开销bytes/2^tcp_adv_win_scale(如果tcp_adv_win_scale > 0)或者bytes-bytes/2^(-tcp_adv_win_scale)(如果tcp_adv_win_scale BOOLEAN

缺省值为0

这个开关可以启动对于在RFC1337中描述的"tcp 的time-wait暗杀危机"问题的修复。启用后,内核将丢弃那些发往time-wait状态TCP套接字的RST 包.

tcp_low_latency : BOOLEAN

缺省值为0

允许TCP/IP 栈适应在高吞吐量情况下低延时的情况;这个选项一般情形是的禁用。(但在构建Beowulf 集群的时候,打开它很有帮助)

tcp_westwood :BOOLEAN

缺省值为0

启用发送者端的拥塞控制算法,它可以维护对吞吐量的评估,并试图对带宽的整体利用情况进行优化;对于WAN 通信来说应该启用这个选项。

tcp_bic :BOOLEAN

缺省值为0

为快速长距离网络启用Binary Increase Congestion;这样可以更好地利用以GB 速度进行操作的链接;对于W AN 通信应该启用这个选项

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 范畴的应用类型.

weblogic服务器优化配置详解

第一章概要 WebLogic 配置文件(config.xml)包含了大量很直观的与性能有关的参数,能通过配置环境与应用程序得到很好的优化。基于系统的需要调整这些参数不仅能改善单个点的性能,而且能提高整个应用程序性能的可衡量性。 试着采用下列WebLogic配置方法,或许能使你的系统达到最佳状态: 一修改运行队列线程数的值。在WebLogic 中队列元素的线程数等于同时占用运行队列的应用程序的数目。当任务加入一个WebLogic 实例,它就被放到执行队列中,然后分配给任务一个线程来运行。线程消耗资源,因此要小心处理这个属性——增加不需要的值,会降低性能。 二,如果可能,使用自带的性能包(NativeIOEnabled=true)。 三,使用特定的应用程序执行队列。 四,使用JDBC连接池时,修改下列属性: 驱动名称:使用小的驱动或者jDriver。 初始容量:设为与最大容量相同的值。 最大容量:其值至少应与线程数相同。 五,把连接池的大小设为与执行队列的线程数相同。 六,设置缓冲。 七,为Servlet和JSP使用多个执行队列。 八,改变JSP默认的Java编译器,javac 比jikes或sj要慢。 第二章优化WebLogic 提要: 为WebLogic启动设置Java参数。 设置与性能有关的配置参数。 调整开发与产品模式默认值。 使用WebLogic“自有的IO”性能包。 优化默认执行队列线程。 优化连接缓存。 如何提高JDBC连接池的性能。 设置Java编译器。 使用WebLogic集群提高性能。 监视WebLogic域。 一、为WebLogic启动设置Java参数 只要启动WebLogic,就必须指定Java参数,简单来说,通过WebLogic.Server 域的命令行就可以完成,不过,由于这样启动的过程冗长并且易于出错,BEA 公

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中的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性能调优方法总结

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 发送和接收缓冲区。这使应用程序可以更快地丢掉它的数据,从而为另一个请求服务。还可以强化远程客户机在服务器繁忙时发

Weblogic10.3_Windows优化设置

Weblogic10.3_Windows优化设置 优化说明 一、Weblogic服务程序设置 1、设置JDK内存 修改weblogic\user_projects\domain\bin下的seDomainEnv.cmd文件: 修改前: If”%JAVA_VENDOR%”=”Sun”( Set WLS_MEM_ARGS_64BIT=-Xms256m –Xmx512m Set WLS_MEM_ARGS_32BIT=-Xms256m –Xmx512m )else( Set WLS_MEM_ARGS_64BIT=-Xms512m –Xmx512m Set WLS_MEM_ARGS_64BIT=-Xms512m –Xmx512m ) Set MEM_PERM_SIZE_32BIT=-XX:PermSize=48m Set MEM_MAX_PERM_SIZE_32BIT=-XX:MaxPermSize=128m 修改后: If”%JAVA_VENDOR%”=”Sun”( Set WLS_MEM_ARGS_64BIT=-Xms512m –Xmx1024m Set WLS_MEM_ARGS_32BIT=- Xms512m –Xmx1024m )else( Set WLS_MEM_ARGS_64BIT=-Xms1024m –Xmx1024m Set WLS_MEM_ARGS_64BIT=-Xms1024m –Xmx1024m ) Set MEM_PERM_SIZE_32BIT=-XX:PermSize=128m Set MEM_MAX_PERM_SIZE_32BIT=-XX:MaxPermSize=256m 说明:红色字体为修改的内容,具体修改值根据实际内存确定 ●-Xmx3550m:设置JVM最大堆内存为3550M。 ●-Xms3550m:设置JVM初始堆内存为3550M。此值可以设置于-Xm相同,以 避免每次JVM动态分配内存所浪费的时间。 ●-XX:PermSize=256M:设置堆内存持久代初始值为256。(貌似是Eclipse等IDE 的初始化参数) ●-XX:MaxPermSize=512M:设置持久代最大值为512M 32位操作JDK内存系统:最大可这种1.5G,如果设置过大,会导致服务无法启动 64位操作JDK内存系统:最大设置为物理内存的60-80% 2、设置线程数: 修改weblogic\user_projects\domains\base_domain\bin下的setDomainEnv.cmd中在JAVA_OPTIONS中添加如下: Set JAVA_OPTIONS=%JAVA_OPTIONS% -Dweblogic.threadpool.MinPoolSize=2000 Set JAVA_OPTIONS=%JAVA_OPTIONS% -Dweblogic.threadpool.MaxPoolSize=4000 说明: JDK5.0以后每个线程栈大小为1M,但是操作系统对一个进程内的线程数还是

weblogic优化设置&调优参数及监控指标

优化设置 Weblogic服务程序设置: 1、设置JDK内存: 修改weblogic\user_projects\domains\base_domain\bin下的setDomainEnv.cmd文件:修改前: if "%JAVA_VENDOR%"=="Sun" ( set WLS_MEM_ARGS_64BIT=-Xms256m -Xmx512m set WLS_MEM_ARGS_32BIT=-Xms256m -Xmx512m ) else ( set WLS_MEM_ARGS_64BIT=-Xms512m -Xmx512m set WLS_MEM_ARGS_32BIT=-Xms512m -Xmx512m ) set MEM_PERM_SIZE_32BIT=-XX:PermSize=48m set MEM_MAX_PERM_SIZE_32BIT=-XX:MaxPermSize=128m 修改后: if "%JAVA_VENDOR%"=="Sun" ( set WLS_MEM_ARGS_64BIT=-Xms512m –Xmx1024m set WLS_MEM_ARGS_32BIT=-Xms512m –Xmx1024m ) else ( set WLS_MEM_ARGS_64BIT=-Xms1024m –Xmx1024m set WLS_MEM_ARGS_32BIT=-Xms1024m –Xmx1024m ) set MEM_PERM_SIZE_32BIT=-XX:PermSize=128m set MEM_MAX_PERM_SIZE_32BIT=-XX:MaxPermSize=256m 说明:红色字体为修改的内容,具体修改值根据实际物理内存确定 ?-Xmx3550m:设置JVM最大堆内存为3550M。 ?-Xms3550m:设置JVM初始堆内存为3550M。此值可以设置与-Xmx相同,以避免每次JVM动态分配内存所浪费的时间。

Weblogic性能调优经验

WEBLOGIC性能调优方案 1.查看当前线程池大小: 登录WEBLOGIC控制台,选择服务器-某服务器-监视-性能,可查看到当前最大线程数量。由于WEBLOGIC9取消了在页面进行调整线程大小的功能,需要在后台进行修改。 2.修改线程池大小: 进入服务器的目录D:\bea\user_projects\domains\base_domain\config,使用编辑器打开config.xml文件,找到如下段落: AdminServer 168.5.130.34z 在上面添加如下两行:默认10 1000 1000 添加后的结果: AdminServer

168.5.130.34 1000 1000 按上面的步骤,继续找到ProxyServer,以及所有MANAGE受管机的段落,分别添加上面的两行语句。最终结果如图所示:

Linux-2.6.31内核优化指南

Linux 2.6.31内核优化指南 作者:Ken Wu Email: ken.wug@https://www.doczj.com/doc/1b12709954.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

Weblogic性能调优经验

Weblogic性能调优经验

WEBLOGIC性能调优方案 1.查看当前线程池大小: 登录WEBLOGIC控制台,选择服务器-某服务器-监视-性能,可查看到当前最大线程数量。由于WEBLOGIC9取消了在页面进行调整线程大小的功能,需要在后台进行修改。 2.修改线程池大小: 进入服务器的目录D:\bea\user_projects\domains\base_domain\config,使用编辑器打开config.xml文件,找到如下段落:

AdminServer 168.5.130.34z 在上面添加如下两行:默认10 1000 1000 添加后的结果:

AdminServer 168.5.130.34 1000 1000 按上面的步骤,继续找到ProxyServer,以及所有MANAGE受管机的段落,分别添加上面的两行语句。

weblogic性能优化

优化WebLogic 服务器性能参数 WebLogic 配置文件(config.xml)包含了大量很直观的与性能有关的参数,能通过配置环境与应用程序得到很好的优化。基于系统的需要调整这些参数不仅能改善单个点的性能,而且能提高整个应用程序性能的可衡量性。 试着采用下列WebLogic配置方法,或许能使你的系统达到最佳状态: 一修改运行队列线程数的值。在WebLogic 中队列元素的线程数等于同时占用运行队列的应用程序的数目。当任务加入一个WebLogic 实例,它就被放到执行队列中,然后分配给任务一个线程来运行。线程消耗资源,因此要小心处理这个属性——增加不需要的值,会降低性能。 二,如果可能,使用自带的性能包(NativeIOEnabled=true)。 三,使用特定的应用程序执行队列。 四,使用JDBC连接池时,修改下列属性: n 驱动名称:使用小的驱动或者jDriver。 n 初始容量:设为与最大容量相同的值。 n 最大容量:其值至少应与线程数相同。 五,把连接池的大小设为与执行队列的线程数相同。 六,设置缓冲。 七,为Servlet和JSP使用多个执行队列。 八,改变JSP默认的Java编译器,javac 比jikes或sj要慢。 优化WebLogic 提要: n为WebLogic启动设置Java参数。 n设置与性能有关的配置参数。 n调整开发与产品模式默认值。 n使用WebLogic“自有的IO”性能包。 n优化默认执行队列线程。 n优化连接缓存。 n如何提高JDBC连接池的性能。 n设置Java编译器。 n使用WebLogic集群提高性能。 n监视WebLogic域。 一、为WebLogic启动设置Java参数 只要启动WebLogic,就必须指定Java参数,简单来说,通过WebLogi c.Server域的命令行就可以完成,不过,由于这样启动的过程冗长并且易于出 错,BEA 公司推荐你把这个命令写进脚本里。为了简化这个过程,你可以修改样例脚本里的默认值,样例脚本是提供WebLogic启动服务器的。 如果你用配置向导创建你的域,WebLogic启动脚本(startWebLogic.cmd)放在domain-name目录里。默认情况下,这个目录是BEA_HOME\user_pr ojects\domain\domain-name,BEA_HOME表示安装路径,domain-nam e是在配置模板中设置的域名称。

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

Weblogic性能调优-通过Thread Dump调优JAVA应用程序

理解和探查内存不足/内存泄漏OutOfMemoryError/Memory Leak Analyze & Utilities Demonstrate II(AIX)

理解和探查内存不足/内存泄漏 听完这次Webinar,您将能够: q了解Java基本内存管理基本概念 q了解发生内存不足/内存泄漏错误的原 因和症状 q了解如何解决内存不足/内存泄漏错误

MENU ?Java内存管理的基本概念 ?内存不足和内存泄漏错误的原因和症状 ?使用分析工具解决内存不足和内存泄漏错误?预防内存不足和内存泄漏?OutOfMemory分析实例

…Java内存 –Java堆内存(heap) …Java堆内存(heap): –是JVM用于分配Java对象的内存,包含活动对象和不可用对象 –堆大小通常是在服务器启动时使用java命令中的 –Xms(最小)–Xmx(最大)标志来定义。

…本地内存(native memory): –是JVM用于其内部操作的本地内存(非Java内存)–JNI代码和第三方本地模块(例如,本地JDBC驱动 程序)也使用本地内存 –最大本地内存大小取决于以下因素: ?操作系统进程内存大小限制 ?已经指定用于Java堆的内存 …进程内存大小: –32位操作系统,理论最大值2的32次方=4G –进程内存= Java内存+本地内存 +加载的可执行文件和库+操作系统保留内存

…垃圾回收 (Garbage Collection, GC):–JVM自动检测和释放不再使用的内存。 –Java运行时JVM会执行GC,这样程序员不再需要显 式 释放对象。 –通常在空闲内存降低到某一水平或内存分配达到某一 数量后自动触发。 …以下OutOfMemory简称OOM …以下Memory Leak简称ML …Heap简称“堆”

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/1b12709954.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内核中,所以只需要安装前端工具,可以从

weblogic调优参数及监控指标

Weblogic调优参数及监控 weblogic调优参数 对Weblogic的调优主要从SEVER、ExecuteQueue、JDBC等几个方面的相关参数进行调优: 一、SERVER 在mydomain->Servers->myserver->Configuration->Tuning->“Enable Native IO”中: 1、Native IOEnabled TRUE,表示该Server使用本地I/O 2、SocketReaders 设置在执行线程中专用做Socket Readers的百分比 3、Maximum Open Sockets 最大打开Socket数 4、Stuck Thread MaxTime 堵塞线程时间,超过这个时间没有返回的执行线程,系统将认为是堵塞线程 如果weblogic认为某个队列中的所有的线程全部堵塞的话,weblogic将会增加执行线程的数量。 注意:执行线程的数量一旦增加,目前weblogic不会去减少他,如果增加了一些线程以后再次出现overflow的警告,weblogic会继续增加执行线程的数量,一直到达到上限为止。 5、Stuck Thread Timer Interval 系统检查堵塞线程的时间间隔 6、Low Memory GC Threshold 当可用内存小于该百分比时,垃圾回收启动 7、Low Memory Granularity Level 当两次检测的可用内存变化超过该百分比时,垃圾回收启动 8、Low Memory Sample Size 在一次检测中的取样次数 9、Low Memory Time Interval 检测间隔时间 10、Accept Backlog

Weblogic常用监控方法及指标

性能测试工作室,专注于性能测试技术研究(https://www.doczj.com/doc/1b12709954.html,)Weblogic常用监控指标 JMSRuntime JMSServersCurrentCount 返回当前JMS服务的连接数ConnectionsCurrentCount 返回本JMS服务器上当前的连接数JMSServersHighCount 返回自服务器启动后JMS服务的最大连接数ConnectionsHighCount 返回本JMS服务器自上次重置后的最大连接数JVMRuntime HeapSizeCurrent 返回当前JVM堆中内存数,单位时字节HeapFreeCurrent 返回当前JVM堆中空闲内存数,单位时字节ExecuteQueueRuntime ExecuteThreadCurrentIdleCount 返回队列中当前空闲线程数PendingRequestOldestTime 返回队列中最长的等待时间PendingRequestCurrentCount 返回队列中等待的请求数 Queue Length 队列长度 JDBCConnectionPoolRuntime WaitingForConnectionHighCount 返回本JDBCConnectionPoolRuntimeMBean 上最大等待连接数WaitingForConnectionCurrentCount 返回当前等待连接的总数 MaxCapacity 返回JDBC池的最大能力 WaitSecondsHighCount 返回等待连接中的最长时间等待者的秒数ActiveConnectionsCurrentCount 返回当前活动连接总数ActiveConnectionsHighCount 返回本JDBCConnectionPoolRuntimeMBean 上最大活动连接数 注: weblogic通常监控JVM和执行队列,JDBC连接池,其中执行队列最关键的指标是Queue Length 队列长度

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

嵌入式linux内存使用与性能优化 https://www.doczj.com/doc/1b12709954.html,/bird67/article/details/199686592014本文摘自: https://www.doczj.com/doc/1b12709954.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的栈空间略微显

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