操作系统性能分析与优化V1.0.docx_第1页
操作系统性能分析与优化V1.0.docx_第2页
操作系统性能分析与优化V1.0.docx_第3页
操作系统性能分析与优化V1.0.docx_第4页
操作系统性能分析与优化V1.0.docx_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

linux2系统安装优化2raid2swap分区2系统安装后的初步调整优化2检查系统是否正常2停止打印服务3停止ipv63对tcp/ip网络参数进行调整,加强抗syn flood能力4关闭不需要的服务4内核参数优化5针对web服务器的网络参数优化6端口使用范围7修改net.core.somaxconn优化高突发请求7允许重用time-wait状态的socket11调整tcp接收缓冲区的大小13针对数据库服务器的内核参数优化14kernel.shmmax14kernel.shmall14kernel.sem14fs.file-max16windows17优化系统服务17提高网络吞吐量18存储优化21general tuning parameters for file servers21linux系统安装优化raid对于读写操作频繁而对数据安全要求不高的应用,可以把磁盘做成raid0对数据安全要求高,而对读写没有特殊要求的应用,可以做成raid1对读要求高,而对写操作无特殊要求,并且要保证数据安全性的应用,可选择raid5对读写要求都很高,并且要保证数据安全性的应用,可选择raid0+1swap分区swap分区在系统的物理内存不够用的时候,把物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到swap分区中,等到那些程序要运行时,再从swap分区中恢复保存的数据到内存中。根据经验,如果内存较小(物理内存小于4gb),一般设置swap分区为内存的2倍。如果大于4gb,小于16gb,可以设置为等于或略小于物理内存即可。如果大于16gb,原则上可以设置为0,但是不建议这样做,因为设置一定大小的swap还是有一定作用的。系统安装后的初步调整优化检查系统是否正常# more /var/log/messages (检查有无系统内核级错误信息)# dmesg (检查硬件设备是否有错误信息)# ifconfig(检查网卡设置是否正确)# ping (检查网络是否正常)停止打印服务如果不准备提供打印服务,停止默认被设置为自动启动的打印服务。rootsample #/etc/rc.d/init.d/cups stop 停止打印服务stopping cups: ok 停止服务成功,出现“ok”rootsample #chkconfig cups off 禁止打印服务自动启动rootsample #chkconfig -list cups 确认打印服务自启动设置状态cups0:off 1:off 2:off 3:off 4:off 5:off 6:off 0-6都为off的状态就ok(当前打印服务自启动被禁止中)停止ipv6在centos默认的状态下,ipv6是被启用的状态。因为我们不使用ipv6,所以,停止ipv6,以最大限度保证安全和快速。首先再次确认一下ipv6功能是不是被启动的状态。rootsample #ifconfig -a 列出全部网络接口信息eth0 link encap:ethernet hwaddr 00:0c:29:b6:16:a3inet addr:3 bcast:55 mask:inet6 addr: fe80:20c:29ff:feb6:16a3/64 scope:linkup broadcast running multicast mtu:1500 metric:1rx packets:84 errors:0 dropped:0 overruns:0 frame.:0tx packets:93 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000rx bytes:10288 (10.0 kib) tx bytes:9337 (9.1 kib)interrupt:185 base address:0x1400 lo link encap:local loopbackinet addr: mask:inet6 addr: :1/128 scope:hostup loopback running mtu:16436 metric:1rx packets:12 errors:0 dropped:0 overruns:0 frame.:0tx packets:12 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0rx bytes:952 (952.0 b) tx bytes:952 (952.0 b)sit0 link encap:ipv6-in-ipv4 确认ipv6是被启动的状态noarp mtu:1480 metric:1rx packets:0 errors:0 dropped:0 overruns:0 frame.:0tx packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0然后修改相应配置文件,停止ipv6。rootsample #vi /etc/modprobe.conf 修改相应配置文件,添加如下行到文尾:alias net-pf-10 offalias ipv6 offrootsample #shutdown -r now 重新启动系统,使设置生效对tcp/ip网络参数进行调整,加强抗syn flood能力# echo net.ipv4.tcp_syncookies = 1 /etc/sysctl.conf# sysctl -p关闭不需要的服务# ntsysv以下仅列出需要启动的服务,未列出的服务一律关闭:crondirqbalance (仅当服务器cpu为s.m.p架构或支持双核心、ht技术时,才需开启,否则关闭。)microcode_ctlnetworkrandomsendmailsshdsyslog内核参数优化调整方法:例:# echo net.ipv4.tcp_syncookies = 1 /etc/sysctl.conf# sysctl -pnet.ipv4.tcp_max_tw_buckets = 6000timewait 的数量,默认是180000。net.ipv4.ip_local_port_range = 1024 65000允许系统打开的端口范围。net.ipv4.tcp_tw_recycle = 1启用timewait 快速回收。net.ipv4.tcp_tw_reuse = 1开启重用。允许将time-wait sockets 重新用于新的tcp 连接。net.ipv4.tcp_syncookies = 1开启syn cookies,当出现syn 等待队列溢出时,启用cookies 来处理。net.core.somaxconn = 262144web 应用中listen 函数的backlog 默认会给我们内核参数的net.core.somaxconn 限制到128,而nginx 定义的ngx_listen_backlog 默认为511,所以有必要调整这个值。dev_max_backlog = 262144每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目。net.ipv4.tcp_max_orphans = 262144系统中最多有多少个tcp 套接字不被关联到任何一个用户文件句柄上。如果超过这个数字,孤儿连接将即刻被复位并打印出警告信息。这个限制仅仅是为了防止简单的dos 攻击,不能过分依靠它或者人为地减小这个值,更应该增加这个值(如果增加了内存之后)。net.ipv4.tcp_max_syn_backlog = 262144记录的那些尚未收到客户端确认信息的连接请求的最大值。对于有128m 内存的系统而言,缺省值是1024,小内存的系统则是128。net.ipv4.tcp_timestamps = 0时间戳可以避免序列号的卷绕。一个1gbps 的链路肯定会遇到以前用过的序列号。时间戳能够让内核接受这种“异常”的数据包。这里需要将其关掉。net.ipv4.tcp_synack_retries = 1为了打开对端的连接,内核需要发送一个syn 并附带一个回应前面一个syn 的ack。也就是所谓三次握手中的第二次握手。这个设置决定了内核放弃连接之前发送syn+ack 包的数量。net.ipv4.tcp_syn_retries = 1在内核放弃建立连接之前发送syn 包的数量。net.ipv4.tcp_fin_timeout = 1如果套接字由本端要求关闭,这个参数决定了它保持在fin-wait-2 状态的时间。对端可以出错并永远不关闭连接,甚至意外当机。缺省值是60 秒。2.2 内核的通常值是180 秒,你可以按这个设置,但要记住的是,即使你的机器是一个轻载的web 服务器,也有因为大量的死套接字而内存溢出的风险,fin- wait-2 的危险性比fin-wait-1 要小,因为它最多只能吃掉1.5k 内存,但是它们的生存期长些。net.ipv4.tcp_keepalive_time = 30当keepalive 起用的时候,tcp 发送keepalive 消息的频度。缺省是2 小时。针对web服务器的网络参数优化在服务器硬件资源额定有限的情况下,最大的压榨服务器的性能,提高服务器的并发处理能力。要提高linux系统下的负载能力,可以使用nginx等原生并发处理能力就很强的web服务器,如果使用apache的可以启用其worker模式,来提高其并发处理能力。除此之外,在考虑节省成本的情况下,可以修改linux的内核相关tcp参数,来最大的提高服务器性能。当然,最基础的提高负载问题,还是升级服务器硬件了,这是最根本的。端口使用范围rootlocalhost # cat /proc/sys/net/ipv4/ip_local_port_range3276861000net.ipv4.ip_local_port_range = 1024 65000允许系统打开的端口范围。修改net.core.somaxconn优化高突发请求net.core.somaxconn = 262144web 应用中listen 函数的backlog 默认会给我们内核参数的net.core.somaxconn 限制到128,而nginx 定义的ngx_listen_backlog 默认为511,所以有必要调整这个值。线上服务器net.core.somaxconn都是默认的128,这个参数会影响到所有af_inet类型socket的listen队列man 2 listen可以知道:int listen(int s, int backlog);the backlog parameter defines the maximum length the queue of pending connections may grow to. if a connection request arrives with the queue full the client may receive an error with an indication of econnrefused or, if the underlying protocol supports retransmission, the request may be ignored so that retries succeed.bugsif the socket is of type af_inet, and the backlog argument is greater than the constant somaxconn (128 in linux 2.0 & 2.2), it is silently truncated to somaxconn.也就是说,web应用中listen函数的backlog会给我们内核参数的net.core.somaxconn 限制到128,在高突发的请求中可能会导致链接超时或者触发重传比如nginx 定义ngx_listen_backlog默认到511, 却由于我们参数未曾优化会限制到128,只有128个connections can be queued in kernel listen queue(by igor sysoev).#define ngx_listen_backlog 511/ls.backlog = ngx_listen_backlog;/ if (listen(s, ls.backlog) = -1) 相信其他应用比如squid也会有类似问题,突发的大并发connect请求会由于内核listen队列的限制导致链接超时或者重传,从而影响用户体验以下是实验测试情况,使用2台机器分别以1000个并发,benchmark方式,请求服务器 ( 相当于2000个并发请求同时请求服务器 )情景1,默认配置, net.core.somaxconn=128,服务器为nginx测试客户端a:transactions: 2072870 hitsavailability: 99.99 %elapsed time: 179.59 secsdata transferred: 6096.59 mbresponse time: 0.08 secstransaction rate: 11542.24 trans/secthroughput: 33.95 mb/secconcurrency: 927.34successful transactions: 2072871failed transactions: 300longest transaction: 45.30shortest transaction: 0.00错误率大概是1.5%测试客户端b:transactions: 1859454 hitsavailability: 99.99 %elapsed time: 179.11 secsdata transferred: 5468.90 mbresponse time: 0.09 secstransaction rate: 10381.63 trans/secthroughput: 30.53 mb/secconcurrency: 904.45successful transactions: 1859454failed transactions: 276longest transaction: 49.60shortest transaction: 0.00错误率大概也是1.5%错误提示大都为:socket: connection timed outwarning: socket: -1803417280 select timed out: connection timed out情景2,调整配置, net.core.somaxconn=8192, nginx显式配置 listen 80 default backlog=8192;测试客户端a:* siege 2.69* preparing 1000 concurrent users for battle.the server is now under siege.lifting the server siege. done.transactions: 1789818 hitsavailability: 100.00 %elapsed time: 180.00 secsdata transferred: 5264.09 mbresponse time: 0.10 secstransaction rate: 9943.43 trans/secthroughput: 29.24 mb/secconcurrency: 997.06successful transactions: 1789818failed transactions: 0longest transaction: 0.87shortest transaction: 0.00错误率是0测试客户端b:* siege 2.69* preparing 1000 concurrent users for battle.the server is now under siege.lifting the server siege. done.transactions: 1768585 hitsavailability: 100.00 %elapsed time: 179.31 secsdata transferred: 5201.65 mbresponse time: 0.10 secstransaction rate: 9863.28 trans/secthroughput: 29.01 mb/secconcurrency: 998.30successful transactions: 1768588failed transactions: 0longest transaction: 3.10shortest transaction: 0.03错误率是0允许重用time-wait状态的socket/proc/sys/net/ipv4/tcp_tw_reuse该文件表示是否允许重新应用处于time-wait状态的socket用于新的tcp连接rootlocalhost # cat /proc/sys/net/ipv4/tcp_tw_reuse0net.ipv4.tcp_tw_reuse = 1开启重用。允许将time-wait sockets 重新用于新的tcp 连接。linux系统下,tcp连接断开后,会以time_wait状态保留一定的时间,然后才会释放端口。当并发请求过多的时候,就会产生大量的time_wait状态的连接,无法及时断开的话,会占用大量的端口资源和服务器资源。这个时候我们可以优化tcp的内核参数,来及时将time_wait状态的端口清理掉。可以使用netstat命令去查time_wait状态的连接状态,输入下面的组合命令,查看当前tcp连接的状态和对应的连接数量:#netstat -n | awk /tcp/ +s$nf end for(a in s) print a, sa这个命令会输出类似下面的结果:last_ack 16syn_recv 348established 70fin_wait1 229fin_wait2 30closing 33time_wait 18098在这里可以看到,有18000多个time_wait,这样就占用了18000多个端口。要知道端口的数量只有65535个,占用一个少一个,会严重的影响到后继的新连接。这种情况下,我们就有必要调整下linux的tcp内核参数,让系统更快的释放time_wait连接。用vim打开配置文件:#vim /etc/sysctl.conf在这个文件中,加入下面的几行内容:net.ipv4.tcp_syncookies = 1net.ipv4.tcp_tw_reuse = 1net.ipv4.tcp_tw_recycle = 1net.ipv4.tcp_fin_timeout = 30输入下面的命令,让内核参数生效:#sysctl -p简单的说明上面的参数的含义:net.ipv4.tcp_syncookies = 1#表示开启syn cookies。当出现syn等待队列溢出时,启用cookies来处理,可防范少量syn攻击,默认为0,表示关闭;net.ipv4.tcp_tw_reuse = 1#表示开启重用。允许将time-wait sockets重新用于新的tcp连接,默认为0,表示关闭;net.ipv4.tcp_tw_recycle = 1#表示开启tcp连接中time-wait sockets的快速回收,默认为0,表示关闭;net.ipv4.tcp_fin_timeout#修改系統默认的 timeout 时间。在经过这样的调整之后,除了会进一步提升服务器的负载能力之外,还能够防御小流量程度的dos、cc和syn攻击。调整tcp接收缓冲区的大小some data transfer performance problems can be solved using the native operating system mechanism for increasing the default size of tcp receive buffers. ibm http server must be restarted after making the change.platform tuning parameter instructions aix tcp_recvspace run no -o tcp_recvspace to display the old value. run no -o tcp_recvspace=new_value to set a larger value. solaris tcp_recv_hiwat run ndd /dev/tcp tcp_recv_hiwat to display the old value. run ndd -set /dev/tcp tcp_recv_hiwat new_value to set a larger value. hp-ux tcp_recv_hiwater_def run ndd /dev/tcp tcp_recv_hiwater_def to display the old value. run ndd -set /dev/tcp tcp_recv_hiwater_def new_value to set a larger value. linux rmem_default run cat /proc/sys/net/core/rmem_default to display the old value. run echo new_value /proc/sys/net/core/rmem_default to set a larger value. rootlocalhost # cat /proc/sys/net/core/rmem_default110592net.core.rmem_default = 8388608针对数据库服务器的内核参数优化kernel.shmmax# controls the maximum shared segment size, in byteskernel.shmmax = 4294967295shmmax 是核心参数中最重要的参数之一,用于定义单个共享内存段的最大值,shmmax 设置应该足够大,能在一个共享内存段下容纳下整个的sga ,设置的过低可能会导致需要创建多个共享内存段,这样可能导致系统性能的下降 。oracle 安装文档建议 32bit linux 系统设置shmmax 为32bit 最大的限制值(setting shmmax to the 32-bit number limit),也就是4g 。所以一般来说,1-4g 的物理内存,可以直接设置shmmax 为最大物理内存即可,那么sga 肯定在一个共享内存段中,32bit linux 系统物理内存大于4g 的设置为4g 即可 。总之,一般设置shmmax =sga (32bit 系统是否支持到1.7g 以上sga 需要注意) 。如果是64bit 的linux 操作系统,shmmax 设置为大于sga_max_size 即可。(仅供参考)kernel.shmall# controls the maximum number of shared memory segments, in pageskernel.shmall = 268435456kernel.shmall 参数是控制共享内存页数 。linux 共享内存页大小为4kb, 共享内存段的大小都是共享内存页大小的整数倍。一个共享内存段的最大大小是16g,那么需要共享内存页数是 16gb/4kb=16777216kb/4kb=4194304 (页),也就是64bit 系统下16gb 物理内存,设置 kernel.shmall = 4194304 才符合要求。这时可以将shmmax 参数调整到 16g 了,同时可以修改sga_max_size 和sga_target 为 12g(您想设置的sga 最大大小,当然也可以是2g14g 等,还要协调pga参数及os 等其他内存使用,不能设置太满,比如16g)。kernel.sem信号量(semaphore),有时被称为信号灯,是在多线程环境下使用的一种设施, 它负责协调各个线程, 以保证它们能够正确、合理的使用公共资源。semaphore分为单值和多值两种,前者只能被一个线程获得,后者可以被若干个线程获得。以一个停车场是运作为例。为了简单起见,假设停车场只有三个车位,一开始三个车位都是空的。这时如果同时来了五辆车,看门人允许其中三辆不受阻碍的进入,然后放下车拦,剩下的车则必须在入口等待,此后来的车也都不得不在入口处等待。这时,有一辆车离开停车场,看门人得知后,打开车拦,放入一辆,如果又离开两辆,则又可以放入两辆,如此往复。在这个停车场系统中,车位是公共资源,每辆车好比一个线程,看门人起的就是信号量的作用。更进一步,信号量的特性如下:信号量是一个非负整数(车位数),所有通过它的线程(车辆)都会将该整数减一(通过它当然是为了使用资源),当该整数值为零时,所有试图通过它的线程都将处于等待状态。在信号量上我们定义两种操作: wait(等待) 和 release(释放)。 当一个线程调用wait(等待)操作时,它要么通过然后将信号量减一,要么一直等下去,直到信号量大于一或超时。release(释放)实际上是在信号量上执行加操作,对应于车辆离开停车场,该操作之所以叫做“释放”是因为加操作实际上是释放了由信号量守护的资源。sem其实是semaphores的缩写,查看当前设置#cat /proc/sys/kernel/sem 250 32000 100 128 或者 #sysctl -a|grep kernel.semerror: permission denied on key kernel.cad_pidkernel.sem = 250 32000 32 128 或者 # ipcs -ls- semaphore limits -max number of arrays = 128max semaphores per array = 250max semaphores system wide = 32000max ops per semop call = 32semaphore max value = 32767 参数含义:上面的4个数据分别对应:semmsl、semmns、semopm、semmni这四个核心参数,具体含义和配置如下。semmsl :用于控制每个信号集的最大信号数量。oracle 建议将 semmsl 设置为 init.ora 文件(用于 linux 系统中的所有数据库)中的最大 process 实例参数的设置值再加上 10 。此外, oracle 建议将 semmsl 的值设置为不少于 100 。semmns:用于控制整个 linux 系统中信号(而不是信号集)的最大数。oracle 建议将 semmns 设置为:系统中每个数据库的 processes 实例参数设置值的总和,加上最大 processes 值的两倍,最后根据系统中 oracle 数据库的数量,每个加 10 。使用以下计算式来确定在 linux 系统中可以分配的信号的最大数量。它将是以下两者中较小的一个值:semmns 或 (semmsl * semmni) semopm: 内核参数用于控制每个 semop 系统调用可以执行的信号操作的数量。semop 系统调用(函数)提供了利用一个 semop 系统调用完成多项信号操作的功能。一个信号集能够拥有每个信号集中最大数量的semmsl 信号,因此建议设置 semopm 等于semmsl 。oracle 建议将 semopm 的值设置为不少于 100 。 semmni :内核参数用于控制整个 linux 系统中信号集的最大数量。oracle 建议将 semmni 的值设置为不少于 100 。 更改当前semaphores参数设置 oracleebsse oracle$ supassword:rootebsse oracle# echo 5010 641280 5010 128 /proc/sys/kernel/semrootebsse oracle# cat /proc/sys/kernel/sem5010 641280 5010 128 如需启动时自动应用,可在/etc/sysctl.conf增加:kernel.sem =5010 641280 5010 128 fs.file-max当并发用户很多的时候, oracle可能会报错: too many open files. 这时就需要增加系统允许打开的文件数。通常默认的是1024(可以通过ulimit查看),要增加这个限制数,需要修改如下的文件:1 /etc/sysctl.conf,增加:fs.file-max=655362 /etc/security/limits.conf,增加:* soft nofile 32768* hard nofile 65536ulimit -a 用来显示当前的各种用户进程限制:rootlocalhost # ulimit -acore file size (blocks, -c) 0data seg size (kbytes, -d) unlimitedscheduling priority (-e) 0file size (blocks, -f) unlimitedpending signals (-i) 4096max locked memory (kbytes, -l) 32max memory size (kbytes, -m) unlimitedopen files (-n) 1024pipe size (512 bytes, -p) 8posix message queues (bytes, -q) 819200real-time priority (-r) 0stack size (kbytes, -s) 10240cpu time (seconds, -t) unlimitedmax user processes (-u) 4096virtual memory (kbytes, -v) unlimitedfile locks (-x) unlimitedlinux对于每个用户,系统限制其最大进程数。为提高性能,可以根据设备资源情况,设置各linux 用户的最大进程数,下面我把某linux用户的最大进程数设为10000个: ulimit -u 10000 对于需要做许多 socket 连接并使它们处于打开状态的 java 应用程序而言,最好通过使用 ulimit -n xx 修改每个进程可打开的文件数,缺省值是 1024。 ulimit -n 4096 将每个进程可以打开的文件数目加大到4096,缺省为1024 其他建议设置成无限制(unlimited)的一些重要设置是: 数据段长度:ulimit -d unlimited 最大内存大小:ulimit -m unlimited 堆栈大小:ulimit -s unlimited cpu 时间:ulimit -t unlimited 虚拟内存:ulimit -v unlimited修改limits.conf文件解除 linux 系统的最大进程数限制:vi /etc/security/limits.conf# 添加如下的行* soft noproc 11000* hard noproc 11000说明:* 代表针对所有用户noproc 是代表最大进程数windows优化系统服务以下服务是最简服务列表.可将这些服务设为 automatic(自动启动).怎么查看服务列表?运行 services.msccryptographic servicesdcom server process launcherdesktop window manager session managerdhcp clientdns clientgroup policy clientmultimedia class schedulerplug and playpowerremote procedure call (rpc)rpc endpoint mappersuperfetchtask schedulerthemesthinkpad pm service(非thinkpad机器, 可以忽略此服务)user profile servicewindows audiowindows audio endpoint builderwindows biometric service (没有指纹设备可忽略)windows event logwindows management instrumentationworkstation提高网络吞吐量修改系统注册表,增加系统最大吞吐能力。批处理如下: echo yes | reg add hklmsystemcurrentcontrolsetservicestcpipparameters /v maxuserport /t reg_dword /d 65534 /f echo yes | reg add hklmsystemcurrentcontrolsetservicestcpipparameters /v tcptimedwaitdelay /t reg_dword /d 5 /ftcp参数调整:参数描述tcpwindowsize该值决定了在任何一个给定的时间,能够在网络上传送的最大数据量(以字节计)。可以使用如下注册表条目,将其设置为从1到65,535 字节的任何值:hkey_local_machinesystemcurrentcontrolsetservicestcpip parameterstcpwindowsize (reg_dword)对于gigabit接口,此参数的默认值被设置为65,535左右(向下舍入为最接近的完整tcp数据包的倍数),100mbps的连接设置为 16,384,其他速度更低的接口(例如调制解调器)则设置为8,192 同样需要向下舍入。理想情况下,该值应该被设置为端到端网络带宽(以字节为单位)与往返延迟(以秒为单位)的乘积,也就是带宽与延迟的乘积。该值应该根据计算机预计接收到的tcp数据量进行设置。window scaling在带宽与延迟的乘积值很高的连接上(例如,卫星连接),可能需要将窗口的大小增加到64k以上。为了提高窗口大小,需要按照rfc1323中的规定,设置如下注册表条目,以启用tcp选项: hkey_local_machinesystemcurrentcontrolsetservicestcpipparameterstcp1323opts (reg_dword)为了使用大于65,535的窗口尺寸,该注册表条目应该被设置为1。在修改了该值之后,便可以将用来控制tcpwindowsize的注册表条目设置为大于64k的值(最大1gb)。maxhashtablesize该值决定了保存tcp连接状态的散列表的大小。默认值为128乘以系统中处理器数量的平方。如果预计系统需要处理大量的并发连接,可以将如下注册表条目设置为一个较高的数值,以提高散列表的性能:hkey_local_machinesystemcurrentcontrolsetservicestcpip parametersmaxhashtablesize (reg_dword)最大值为 0x10000(65,536)。我们建议您在将要处理大量连接负载的大型服务器上将此值设置为最大值。需要记住的是:该表使用了不分页的池,所以,如果服务器没有许多不分页池可用,或者服务器不需要处理大量连接负载,那么请不要将本参数设置为一个太高的数值。numtcbtablepartitions默认情况下,存放tcp连接状态的表拥有的分区数量等于处理器数目的平方。在大多数情况下,该设置是恰当的,而且会减少表的争用现象。但是,对于处理器数目大于16的服务器,默认值显得过于高了,并可能会因此占用太多的cpu资源。在这种情况下,请将以下注册表条目设置为一个小于处理器数目平方的数值:hkey_local_machinesystemcurrentcontrolsetservicestcpipparametersnumtcbtablepartitions (reg_dword)maxuserport当计算机上存在一个活动连接的时候,就会使用到端口。在给定了可用的用户模式端口(每个ip地址有5000个)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论