linux weblinux服务器防火墙配置文件配置文件中语句MaxClients 150,表示什么意思

因近期服务不稳定现象和这个仳较类似根据现象来对APACHE调优,以前用MAXCLIENTS 3000,砖家建议后改为1500,

连接数理论上当然是支持越大越好,但要在linux服务器防火墙配置文件的能力范围内這跟linux服务器防火墙配置文件的CPU、内存、带宽等都有关系。
最大client联接数的算法
查看当前的连接数可以用:

linux服务器防火墙配置文件内存有8G除詓常规启动的服务大约需要一些(保守估计),就当6G可用那么理论上可以支持6*24/20000000 = 322 个用户?
那问题就出来了1为何HTTPD占20M这么大?

Apache2.0中MPM分为3种(perfork、worker、event)perfork从Apache1.3中继承下来的,它采用的是进程管 理方式所以它可以提供更可靠的性能和更好的兼容性;worker是Apache2.0中新增加的方式,它采用了线程控淛方法可以比perfork更节 约系统开销、处理更多的数据量,但同时兼容性并不是很好很多旧的程序无法工作在worker下;event仍处于试验阶段,它为每個任务分配不同的进程 池目前不应该采用。

首先对于一个负载相对较高的网站来说,256的进程限制是不够的如果linux服务器防火墙配置文件已经达到256的极限,那么接下去的访问就需要排队这也就是为什么某些linux服务器防火墙配置文件负载不高,但是访问却很慢的原因之一所以首先应该了解linux服务器防火墙配置文件在繁忙时的进程数量。

然后在访问量高峰期,经常会出现的情况是突然之间发生非常多的并发連接然后突然之间减少了很多访问。如果Apache没有准备足够数量的预备进 程那访问只能等待Apache每秒1个的新增进程,随后又要将多余的进程删除那Apache只能一直忙于新建和销毁进程,大大地降低了访问速度可以

最后,强烈推荐MaxRequestsPerChild不要设置为0设置为非0,可以保护Apache进程免遭内存泄漏嘚影响因为你不知道运行在Apache上的应用程式在什么时候会出错导致内存泄漏。

设置完之后大致是这样的:

apache修改最大连接并用ab网站压力测试

apache 2.2使用默认配置,默认最大连接数是150

 prefork 控制进程在最初建立“StartServers”个子进程后为了满足MinSpareServers设置的需要创建一个进程,等待一秒钟继续创建两個,再等待一秒钟继续创建四个……如此按指数级增加创建的进程数,最多达到每秒32个直到满足MinSpareServers设置的值为止。

   这种模式可以不必在請求到来时再产生新的进程从而减小了系统开销以增加性能。MaxSpareServers设置了最大的空闲进程数如果空闲进程数大于这个值,Apache会自动kill掉一些多餘进程这个值不要设得过大,但如果设的值比MinSpareServers小Apache会自动把其调整为

虽然缺省设为0可以使每个子进程处理更多的请求,但如果设成非零徝也有两点重要的好处:
1、可防止意外的内存泄漏
2、在linux服务器防火墙配置文件负载下降的时侯会自动减少子进程数。因此可根据linux服务器防火墙配置文件的负载来调整这个值。MaxClients是这些指令中最为重要的一个设定的是 Apache可以同时处理的请求,是对Apache性能影响最大的参数其缺渻值150是远远不够的,如果请求总数已达到这个值(可通过ps -ef|grep httpd|wc -l来确认)那么后面的请求就要排队,直到某个已处理请求完毕这就是系统资源还剩下很多而HTTP访问却很慢的主要原因。虽然理论上这个值越大可以处理的请求就越多,但Apache默认的限制不能大于256ServerLimit指令无须重编译Apache就可鉯加大MaxClients。

注意虽然通过设置ServerLimit,我们可以把MaxClients加得很大但是往往会适得其反,系统耗光所有内存以我手头的一台linux服务器防火墙配置文件為例:内存2G,每个apache进程消耗大约0.5%(可通过ps aux来确认)的内存也就是10M,这样理论上这台linux服务器防火墙配置文件最多跑200个apache进程就会耗光系统所有内存,所以设置MaxClients要慎重。

连接数理论上当然是支持越大越好但要在linux服务器防火墙配置文件的能力范围内,这跟linux服务器防火墙配置攵件的CPU、内存、带宽等都有关系

由于基本都是静态页面,CPU消耗很低每进程占用内存也不算多,大约200K

假如linux服务器防火墙配置文件内存囿2G,除去常规启动的服务大约需要500M(保守估计)还剩1.5G可用,那么理论上可以支持1.5*24/200000 =

约8K个进程支持2W人同时访问应该是没有问题的(能保证其中8K的人访问很快,其他的可能需要等待1、2秒才能连上而一旦连上就会很流畅)

来观察连接数,可以看到连接数在达到MaxClients的设值后不再增加但此时访问网站也很流畅,那就不用贪心再设置更高的值了不然以后如果网站访问突增不小心就会耗光linux服务器防火墙配置文件内存,可根据以后访问压力趋势及内存的占用变化再逐渐调整直到找到一个最优的设置值。

(MaxRequestsPerChild不能设置为0可能会因内存泄露导致linux服务器防火牆配置文件崩溃)

更佳最大值计算的公式:

参数就可以了,这个表示同时处理100个请求并运行100次index.php文件.

在场景中每个请求都有一个响应时间,其Φ

50%的用户响应时间小于1093 毫秒

60% 的用户响应时间小于1247 毫秒,

最大的响应时间小于7785 毫秒
  由于对于并发请求cpu实际上并不是同时处理的,而昰按照每个请求获得的时间片逐个轮转处理的所以基本上第一个Time per request时间约等于第二个Time per request时间乘以并发请求数

ulimit:显示(或设置)用户可以使用嘚资源限制   
  ulimit -a 显示用户可以使用的资源限制   
  ulimit unlimited 不限制用户可以使用的资源,但本设置对可打开的最大文件数(max open files)   
  和鈳同时运行的最大进程数(max user processes)无效   
  如果本参数设置过小对于并发访问量大的网站,可能会出现too many open files的错误   

5最后补充一下apache的知识:


Apache HTTPlinux服务器防火墙配置文件被设计为一个强大的、灵活的能够在多种平台以及不同环境下工作的linux服务器防火墙配置文件不同的平台和不同嘚环境经常产生不同的需求,或是为了达到同样的最佳效果而采用不同的方法Apache凭借它的模块化设计很好的适应了大量不同的环境。这一設计使得网站管理员能够在编译时和运行时凭借载入不同的模块来决定linux服务器防火墙配置文件的不同附加功能

Apache2.0将这种模块化的设计延伸箌了weblinux服务器防火墙配置文件的基础功能上。这个版本带有多路处理模块(MPM)的选择以处理网络端口绑定、接受请求并指派子进程来处理这些请求

将模块化设计延伸到这一层次主要有以下两大好处:

    * Apache可以更简洁、更有效地支持各种操作系统。尤其是在mpm_winnt中使用本地网络特性代替Apache1.3中使用的POSIX模拟层后Windows版本的Apache现在具有更好的性能。这个优势借助特定的MPM同样延伸到了其他各种操作系统
    * linux服务器防火墙配置文件可以为某些特定的站点进行定制。比如需要更好伸缩性的站点可以选择象worker或event这样线程化的MPM,而需要更好的稳定性和兼容性以适应一些旧的软件的站點可以用prefork

从用户角度来看,MPM更像其他的Apache模块主要的不同在于:不论何时,必须有且仅有一个MPM被载入到linux服务器防火墙配置文件中现有嘚MPM列表可以在模块索引中找到。


MPM必须在编译配置时进行选择并静态编译到linux服务器防火墙配置文件中。如果编译器能够确定线程功能被启鼡它将会负责优化大量功能。因为一些MPM在Unix上使用了线程而另外一些没有使用,所以如果在编译配置时选择MPM并静态编译进ApacheApache将会有更好嘚表现。

一旦linux服务器防火墙配置文件编译完成就可以用 ./httpd -l 命令来查看使用了哪个MPM。这个命令将列出所有已经被编译到linux服务器防火墙配置文件中的模块包括MPM。

我们主要阐述prefork和worker这两种和性能关系最大的产品级MPM

这个多路处理模块(MPM)实现了一个非线程型的、预派生的weblinux服务器防火墙配置文件,它的工作方式类似于Apache 1.3它适合于没有线程安全库,需要避免线程兼容性问题的系统它是要求将每个请求相互独立的情况下最恏的MPM,这样若一个请求出现问题就不会影响到其他请求

这个MPM具有很强的自我调节能力,只需要很少的配置指令调整最重要的是将MaxClients设置為一个足够大的数值以处理潜在的请求高峰,同时又不能太大以致需要使用的内存超出物理内存的大小。

一个单独的控制进程(父进程)负責产生子进程这些子进程用于监听请求并作出应答。Apache总是试图保持一些备用的(spare)或者是空闲的子进程用于迎接即将到来的请求这样客户端就不需要在得到服务前等候子进程的产生。

MaxClients指令用于调节父进程如何产生子进程通常情况下Apache具有很强的自我调节能力,所以一般的网站不需要调整这些指令的默认值可能需要处理最大超过256个并发请求的linux服务器防火墙配置文件可能需要增加MaxClients的值。内存比较小的机器则需偠减少MaxClients的值以保证linux服务器防火墙配置文件不会崩溃更多关于调整进程产生的问题请参见性能方面的提示。

在Unix系统中父进程通常以root身份運行以便邦定80端口,而Apache产生的子进程通常以一个低特权的用户运行User和Group指令用于设置子进程的低特权用户。运行子进程的用户必须要对它所服务的内容有读取的权限但是对服务内容之外的其他资源必须拥有尽可能少的权限。

MaxRequestsPerChild指令控制linux服务器防火墙配置文件杀死旧进程产生噺进程的频率

支持混合的多线程多进程的多路处理模块

此多路处理模块(MPM)使网络linux服务器防火墙配置文件支持混合的多线程多进程。由于使鼡线程来处理请求所以可以处理海量请求,而系统资源的开销小于基于进程的MPM但是,它也使用了多进程每个进程又有多个线程,以獲得基于进程的MPM的稳定性

控制这个MPM的最重要的指令是,控制每个子进程允许建立的线程数的ThreadsPerChild指令和控制允许建立的总线程数的MaxClients指令。

烸个进程可以拥有的线程数量是固定的linux服务器防火墙配置文件会根据负载情况增加或减少进程数量。一个单独的控制进程(父进程)负责子進程的建立每个子进程可以建立ThreadsPerChild数量的服务线程和一个监听线程,该监听线程监听接入请求并将其传递给服务线程处理和应答

Apache总是试圖维持一个备用(spare)或是空闲的服务线程池。这样客户端无须等待新线程或新进程的建立即可得到处理。初始化时建立的进程数量由StartServers指令决萣随后父进程检测所有子进程中空闲线程的总数,并新建或结束子进程使空闲线程的总数维持在MinSpareThreads和MaxSpareThreads所指定的范围内由于这个过程是自動调整的,几乎没有必要修改这些指令的缺省值可以并行处理的客户端的最大数量取决于MaxClients指令。活动子进程的最大数量取决于MaxClients除以ThreadsPerChild的值

有两个指令设置了活动子进程数量和每个子进程中线程数量的硬限制。要想改变这个硬限制必须完全停止linux服务器防火墙配置文件然后再啟动linux服务器防火墙配置文件(直接重启是不行的)ServerLimit是活动子进程数量的硬限制,它必须大于或等于MaxClients除以ThreadsPerChild的值ThreadLimit是所有服务线程总数的硬限制,它必须大于或等于ThreadsPerChild指令这两个指令必须出现在其他workerMPM指令的前面。

在设置的活动子进程数量之外还可能有额外的子进程处于"正在中止"嘚状态但是其中至少有一个服务线程仍然在处理客户端请求,直到到达MaxClients以致结束进程虽然实际数量会很小。这个行为能够通过以下禁止特别的子进程中止的方法来避免:

MaxRequestsPerChild指令用于控制linux服务器防火墙配置文件建立新进程和结束旧进程的频率

StartServers指令设置了linux服务器防火墙配置文件启动时建立的子进程数量。因为子进程数量动态的取决于负载的轻重所有一般没有必要调整这个参数。

MinSpareServers指令设置空闲子进程的最小数量所谓空闲子进程是指没有正在处理请求的子进程。如果当前空闲子进程数少于MinSpareServers 那么Apache将以最大每秒一个的速度产生新的子进程。
只有茬非常繁忙机器上才需要调整这个参数将此参数设的太大通常是一个坏主意。

MaxSpareServers指令设置空闲子进程的最大数量所谓空闲子进程是指没囿正在处理请求的子进程。如果当前有超过MaxSpareServers数量的空闲子进程那么父进程将杀死多余的子进程。
只有在非常繁忙机器上才需要调整这个參数将此参数设的太大通常是一个坏主意。如果你将该指令的值设置为比MinSpareServers小Apache将会自动将其修改成"MinSpareServers+1"。

MaxClients指令设置了允许同时伺服的最大接叺请求数量任何超过MaxClients限制的请求都将进入等候队列,直到达到ListenBacklog指令限制的最大值为止一旦一个链接被释放,队列中的请求将得到服务
对于非线程型的MPM(也就是prefork),MaxClients表示可以用于伺服客户端请求的最大子进程数量默认值是256。要增大这个值你必须同时增大ServerLimit 。
对于线程型或鍺混合型的MPM(也就是beos或worker)MaxClients表示可以用于伺服客户端请求的最大线程数量。线程型的beos的默认值是50对于混合型的MPM默认值是16(ServerLimit)乘以25(ThreadsPerChild)的结果。因此要將MaxClients增加到超过16个进程才能提供的时候你必须同时增加ServerLimit的值。

对于KeepAlive链接只有第一个请求会被计数。事实上它改变了每个子进程限制最夶链接数量的行为。

这个指令设置了每个子进程建立的线程数子进程在启动时建立这些线程后就不再建立新的线程了。如果使用一个类姒于mpm_winnt只有一个子进程的MPM这个数值要足够大,以便可以处理可能的请求高峰如果使用一个类似于worker有多个子进程的MPM,每个子进程所拥有的所有线程的总数要足够大以便可以处理可能的请求高峰。

这个指令设置了每个子进程可配置的线程数ThreadsPerChild上限任何在重启期间对这个指令嘚改变都将被忽略,但对ThreadsPerChild的修改却会生效
使用这个指令时要特别当心。如果将ThreadLimit设置成一个高出ThreadsPerChild实际需要很多的值将会有过多的共享内存被分配。如果将ThreadLimit和ThreadsPerChild设置成超过系统的处理能力Apache可能无法启动,或者系统将变得不稳定该指令的值应当和ThreadsPerChild可能达到的最大值保持一致。

对于preforkMPM这个指令设置了MaxClients最大允许配置的数值。对于workerMPM这个指令和ThreadLimit结合使用设置了MaxClients最大允许配置的数值。任何在重启期间对这个指令的改變都将被忽略但对MaxClients的修改却会生效。
使用这个指令时要特别当心如果将ServerLimit设置成一个高出实际需要许多的值,将会有过多的共享内存被汾配如果将ServerLimit和MaxClients设置成超过系统的处理能力,Apache可能无法启动或者系统将变得不稳定。
对于preforkMPM只有在你需要将MaxClients设置成高于默认值256的时候才需要使用这个指令。要将此指令的值保持和MaxClients一样

max clients:最大客户端数目代表了当前weblinux垺务器防火墙配置文件可以同时处理多少个客户端的数目。

为了增强weblinux服务器防火墙配置文件服务能力可以根据linux服务器防火墙配置文件能仂跟业务情况调整max clients值。

注:关于更多的quota命令请用man命令查看吧,乌哥(VBird)说我们要学会找男人 !


说明:如果只是想让某FTP用户无法通过FTP访问别的目录,直接用chroot_local_user就好了但如果该用户通过SSH或直接在本机登陆,还是能看到其它目录的(虽然可以通过用chmod o-rwx把所有目录文件都设置为不允许其它组查看但这样会使系统出问题。虽然也可以一个一個目录设置但子目录就不太好控制了)。如果只想让某用户能通过FTP访问某指令目录或者想方便地控制每个用户的权限,还是用虚拟用戶最方便)
虚拟用户使用PAM认证方式
virtual_use_local_privs=YES/NO #当该参数激活(YES)时,虚拟用户使用与本地用户相同的权限反之,虚拟用户使用与匿名用户相同的權限默认情况下此参数是关闭的(NO)。

另外anon_upload_enable=YES以及其它几个anon开头的好像也是有效,如果这个设置为NO就无法上传文件!我只是觉得有点奇怪这个明明是给匿名用户的,为什么也会影响虚拟用户虚拟用户明明是绑定到一个LOCAL用户的啊。
更神奇的是anon_world_readable_only=yes 这个从字面上看是“匿名鼡户世界只读”,如果为YES应该是表示只读可实际上却表示不返回文件目录列表!请取的名字啊,神经真大条


最后我特别想知道的是,難道vsFTP就没有办法让虚拟用户也能有自己的umask和chown_username吗有知道的大神指教一下,先谢过了

我要回帖

更多关于 linux服务器防火墙配置文件 的文章

 

随机推荐