mysql split string_MySQL Split String Function

jinlinlucky:二、多路处理模块的配置说明|@||@|Apache HTTP服务器是一个强大的、灵活的能够在多种平台、不同环境下运行的Web服务器。由于不同的平台和不同的环境经常产生不同的需求,为了达到同样的最佳效果则需要采取不同的实现方法, Apache的模块化设计就可以很好的适应大量不同的环境。使得网站管理员能够在编译和运行时凭借载入不同的模块来决定服务器的附加功能。Apache的多路处理模块(MPM)就是用于选择处理网络端口绑定、接受请求并指派子进程处理来自客户端的请求。|@||@|默认的MPM|@||@|下表列出了不同操作系统上默认的MPM。如果编译时没有进行选择,这将是默认选择的MPM。|@||@|操作系统名称|@|MPM名称|@||@|BeOS|@|beos|@||@|Netware|@|mpm_netware|@||@|OS/2|@|mpmt_os2|@||@|Unix|@|prefork|@||@|Windows|@|mpm_winnt|@||@||@|1、prefork.c模块(一个非线程型的、预派生的MPM)|@||@|prefork.c模块是由一个单独的控制进程(父进程)负责产生子进程,这些子进程用于监听请求并作出应答。Apache设置了一些备用的(spare)或者是空闲的子进程来处理即将接收的请求,这样可以避免服务器接收到请求后在创建子进程。在Unix系统中,父进程通常以root身份运行以便邦定80端口,而 Apache产生的子进程通常以一个低特权的用户运行。User和Group参数就是用于设置子进程的低特权用户。运行子进程的用户必须要对它所服务的内容有读取的权限,但是对服务内容之外的其他资源最好拥有尽可能少的权限。|@||@|【配置示例】|@||@||@||@|StartServers       8|@||@|MinSpareServers     5|@||@|MaxSpareServers   20|@||@|ServerLimit       400|@||@|MaxClients       256|@||@|MaxRequestsPerChild 4000|@||@||@||@||@|【参数说明】|@||@|1.ServerLimit|@|默认的MaxClient最大是256个线程,如果想设置更大的值,就需要修改ServerLimit这个参数。例子中的400是ServerLimit这个参数的最大值。如果需要更大,则必须编译apache,此前都是不需要重新编译Apache。|@||@|2.StartServers |@|指定服务器启动时建立的子进程数量,因为子进程的数量动态的取决于负载的轻重,所以一般没有必要调整这个参数,prefork模式默认为5。|@||@|3.MinSpareServers |@|指定空闲子进程的最小数量,所谓空闲子进程是指没有正在处理请求的子进程。默认为5。如果当前空闲子进程数少于MinSpareServers ,那么Apache将以最大每秒一个的速度产生新的子进程,只有机器在非常繁忙的情况下才需要调整这个参数。|@||@|4.MaxSpareServers |@|设置空闲子进程的最大数量。默认为10。如果当前有超过MaxSpareServers数量的空闲子进程,那么父进程将杀死多余的子进程。如果该参数的值设置比MinSpareServers小,Apache则会自动将其修改成"MinSpareServers+1"。|@||@|5.MaxClients|@|指可以服务于客户端请求的最大子进程数量,即限定同一时间客户端最大接入请求的数量,默认值为256。任何超过MaxClients限制的请求都将进入等候队列,一旦一个连接被释放,队列中的请求将得到服务。|@||@|6.MaxRequestsPerChild |@|每个子进程在其生存期内允许处理的最大请求数,默认为10000.到达MaxRequestsPerChild的限制后,子进程将会结束。如果MaxRequestsPerChild为"0",子进程将永远不会结束。这个参数也可以理解成控制服务器杀死旧进程产生新进程的频率。|@|注意:|@|从系统稳定性来考虑将MaxRequestsPerChild设置成非零有两个好处:|@|1.可以防止(偶然的)内存泄漏无限进行,从而耗尽内存。|@|2.给进程一个有限寿命,从而有助于当服务器负载减轻的时候减少活动进程的数量。|@||@|【工作原理介绍】|@||@|首先服务启动后会创建以StartServers个数的进程,然后等待来自客户端的请求。我们这里先假设从客户端来了大量的请求,这时Apache服务器会根据自身的负载情况自动创建新进程,如果服务器一直没有空闲进程那么它就会一直创建新进程,直到满足MaxClients和ServerLimit设置的最大值。如果来自客户端的负载没有那么大,Apache服务器将会根据MinSpareServers、MaxSpareServers和MaxRequestsPerChild设置的值来杀掉多余的进程。其中每个进程在某个确定的时间只能维持一个连接。|@||@|【小结】|@||@|上面叙述的这些参数中,对系统性能影响较大的有两个:MaxClients 和ServerLimit。这个两个参数主要影响Web服务器处理客户端请求的能力,它们决定着服务器创建用来处理请求的进程的最大值。如果来自客户端的请求总数已经达到系统创建进程的最大值(可通过ps -ef|grep http|wc –l来确认),那么后面来的请求就要排队,直到某个已处理请求完成。这就是应用系统资源还很富余而HTTP访问却很慢的主要原因。如何找出这个两个参数的最佳值需要综合很多因素,但一般情况下可以参考系统性能测试结果和Web服务器的系统资源。|@||@|注意:prefork模式下创建较多的进程将会占去大量系统内存,如果MaxClients和ServerLimit设置过大时可能会造成Web服务器崩溃。|@||@|2、worker.c模块(支持混合的多线程多进程的多路处理模块)|@| worker 模块使用多个子进程,每个子进程有多个线程。每个线程在某个确定的时间只能维持一个连接。通常来说,在一个高流量的HTTP服务器上,worker 模式是个比较好的选择,因为它的内存使用比prefork要低得多。但worker模式也有不完善的地方,如果一个线程崩溃,整个进程就会连同其所有线程一起"死掉"。由于线程共享内存空间,所以一个进程在运行时必须被系统识别为"每个线程都是安全的"。|@||@|【配置示例】 |@||@||@||@|StartServers     2|@||@|MaxClients     400|@||@|ServerLimit     12|@||@|MinSpareThreads   25|@||@|MaxSpareThreads   75|@||@|ThreadsPerChild   25|@||@|ThreadLimit     75|@||@|MaxRequestsPerChild 0|@||@||@||@||@|【参数说明】|@||@|1.ServerLimit |@|服务器允许配置的进程数上限。这个参数和ThreadLimit结合使用便决定了MaxClients所能设置的最大值。任何在重启期间对这个参数的改变都将被忽略,但对MaxClients的修改却会生效。|@||@|2.ThreadLimit|@|每个子进程可设置的线程数上限,这个参数决定了每个子进程可创建线程的数,即ThreadsPerChild的上限。任何在重启期间对这个参数的改变都将被忽略,但对ThreadsPerChild的修改却会生效。默认值是"64".|@||@|3.StartServers |@|服务器启动时建立的子进程数,默认值是"3"。|@||@|4.MinSpareThreads |@|最小空闲线程数,默认值是75。MPM将基于整个服务器监视空闲线程数。如果服务器中总的空闲线程数太少,子进程将产生新的空闲线程。|@||@|5.MaxSpareThreads |@|设置最大空闲线程数。默认值是250。MPM将基于整个服务器监视空闲线程数。如果服务器中总的空闲线程数太多,子进程将杀死多余的空闲线程。MaxSpareThreads的取值范围是有限制的,在Apache的 worker模式下是要求大于等于 MinSpareThreads与ThreadsPerChild之和来自动修正你设置的值。|@||@|6.MaxClients |@|允许同时接收客户端最大请求的数量(最大线程数量)。任何超过MaxClients限制的请求都将进入等候队列。默认值是400,即16 (ServerLimit)乘以25(ThreadsPerChild)。因此需要增加MaxClients的时候,你必须同时增加 ServerLimit的值。|@||@|7.ThreadsPerChild |@|每个子进程建立常驻的执行线程数。默认值是25。子进程在启动时建立这些线程后就不再建立新的线程了。|@||@|8.MaxRequestsPerChild |@|设置每个子进程在其生存期内允许提供服务的最大请求数量。到达MaxRequestsPerChild的限制后,子进程将会结束。如果MaxRequestsPerChild为"0",子进程将永远不会结束。|@||@|将MaxRequestsPerChild设置成非零值有两个好处:|@|1.可以防止(偶然的)内存泄漏无限进行,从而耗尽内存。|@|2.给进程一个有限寿命,从而有助于当服务器负载减轻的时候减少活动进程的数量。|@|注意|@|对于KeepAlive链接,只有第一个请求会被计数。事实上,它改变了每个子进程限制最大链接数量的行为。|@||@|【工作原理介绍】:|@||@|worker的工作原理是:先由主控制进程创建“StartServers”个子进程,每个子进程中含有“ThreadsPerChild”个线程,各个线程独立地处理来自客户端的请求。同Prefork一样,为了不在请求到来时在去创建线程,MinSpareThreads和MaxSpareThreads决定了最少和最多空闲线程数;随着负载逐渐增大,而现有子进程中的线程不能满足负载时,主控进程将按照“ServerLimit”和“MaxClients”的限制去创建新进程,如果“ServerLimit”达到上限而ServerLimit* ThreadsPerChild ThreadsPerChild。如果“ServerLimit”未达到上限而“MaxClients”达到上限,那么服务器将不采取任何行动。倘若负载逐渐减小,那么Apache服务器将根据实际情况去消减线程或进程。|@||@|【小结】|@| 在worker模式下MinSpareThreads和MaxSpareThreads的最大缺省值分别是75和250。这两个参数对Apache的性能影响并不大,可以按照实际情况做相应调节。 而ThreadsPerChild参数是最影响性能的一个,因为worker模式下所能同时处理的请求总数是由子进程总数与ThreadsPerChild之积来决定的。它的最大缺省值是64,如果负载较大,64也是不够的。这时要显式使用ThreadLimit指令,它的最大缺省值是20000。。注意,不要把这两个值设得太高,如果超过系统的处理能力,会使系统很不稳定,这个值最好参考性能测试的结果来设,同时子进程总数与ThreadsPerChild之积应该略大于MaxClinets。|@||@||@||@|三、配置静态文件|@||@|目前基于B/S结构的Web页面有动态和静态两种形式,其中动态页面需由服务器的解析器进行解析,通常还需连接数据库,进行数据库存取操作,最后形成HTML语言信息包反馈给浏览者;而静态页面,则无须解析,无须连接数据库,直接反馈给客户端就可以。  |@||@|这里说的静态文件就是指在服务器端无需进行任何处理,就可以直接反馈给浏览器的文件,例如:HTML、JS,CSS、JPG、BMP等等。|@||@|将应用系统中的静态文件配置到Apache服务器上有几大好处,首先从客户角度来看Web页面的响应时间提高了,其次从系统资源来看应用服务器能专心处理动态文件,所以充分发挥了它的效能,再次从系统稳定性来看Apache服务器屏蔽了所有静态文件的请求,减轻了应用服务器的压力从而降低了由大访问量带来宕机的风险。|@||@|【配置示例1】|@||@|Alias /images/ "/home/hrdc/images/"|@||@||@||@|Options Indexes FollowSymLinks|@||@|AllowOverride None|@||@|Order allow,deny|@||@|Allow from all|@||@||@||@|#配置图片请求映射,与CSS,JS的配置类似。|@||@||@||@||@||@| WebLogicCluster 192.64.96.18:8018,192.64.96.11:8011|@||@| MatchExpression /file/*|@||@| MatchExpression *.jsp|@||@| MatchExpression *.jsf|@||@| MatchExpression *.rtf|@||@| MatchExpression *.xls|@||@| MatchExpression *.doc|@||@| MatchExpression /console*|@||@||@||@||@||@|#配置Webloig模块中的参数。|@||@||@|【关键参数说明】|@||@|l VirtualHost|@||@|虚拟主机。|@||@|【说明】|@||@|在这个参数内可以模仿一个Web服务配置众多参数,即在和中配置一组仅作用于特定虚拟主机的参数。|@||@|示例|@||@||@|ServerAdmin   hrdc.zh@ccb.cn |@|DocumentRoot /home/hrdc|@|ServerName   hrdc.ccb.cn|@|ErrorLog logs/host.foo.com-error_log|@|TransferLog logs/host.foo.com-access_log|@| |@||@||@|注意:每个虚拟主机必须对应不同的IP地址、端口或是不同的主机名。|@||@|中定义的监听地址只代表虚拟主机并不是指定Apache服务的监听地址。指定Apache监听地址的参数则是Listen。|@||@|l IfModule|@||@|根据指定的模块是否启用为条件来决定是否进行处理。|@||@|【语法】|@||@| ... |@||@|【说明】|@||@|在该参数中配置的表达式为真的时候才进行处理。如果为假,所有其包含的参数都将被忽略。|@||@|段中的表达式可以为以下两种方式之一来表达:|@||@|·     module |@||@|·     !module |@||@|第一种情况表示,在和之间的配置参数仅当module被载入后才被执行。此模块可以是编译时静态链接的核心模块或是使用LoadModule指令动态载入的模块。第二种情况则表示,仅当module没有载入时才执行参数内的配置处理。|@||@|module可以是模块的标识符或者是编译模块时的文件名。在上面的例子中,mod_weblogic.c就是编译模块时的文件名。|@||@|注意:配置段是可以嵌套的,从而可以实现简单的多模块测试。|@||@|【小结】|@||@|现在再看一下“配置示例1”中关于Weblogic的配置,其中第一行是用于指定集群中托管服务器的地址。而下面的“MatchExpression”表示当URL匹配上后面的表达式时,Apache服务器会把该请求转给Weblogic处理。从配置中可以看出如果有一个“http://192.23.108.2:8022/images/logon.jpg”这样的请求,它是不会转发到Weblogic集群上的。|@|

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值