HTTP加速器varnish安装小记(1) WEB应用

HTTP加速器varnish安装小记(1)

上午共享的那个varnish安装手册,个人看了下,有点不知所云,好吧~看来还是先安装玩玩! 苦逼公司服务器没法连外网,不能用什么wget或yum命令直接下载安装,每每看到别人博客贴出的在线安装代码时,总有一股羡慕嫉妒“恨”冒了出来。。。好吧,既然没法上外网,那只能麻烦点通过下载源码来编译安装了! Varnish 3.0.4下载地址: http://repo.varnish-cache.org/source/varnish-3.0.4.tar.gz 开始安装: 发现到第三步时,报如下错误: 经验告诉我,看到pcre字眼,就立即想到了是不是要安装支持正则表达式的 pcre 8??于是又找到pcre8开始安装: 完了之后,继续安装varnish,依然报同样的错!在参数中加入--with-pcre-config=/path/ 重试,依然。。。 看来不是pcre 8的问题了,在百思不得其解时,我打开了RedHat的软件包,搜了一下pcre关键字,结果发现还有个名为pcre-devel-6.6-2.el5_1.7.x86_64.rpm的软件包,好吧,就尝试安装一下看看: 安装完成后,继续编译varnish,发现没报错了!我勒个去,还真是少了这个软件包的支持,编译的安装方式就是麻烦,要是rpm包的话,直接就会报缺少依赖包的错误了,也不会走那么多弯路!不过也好,至少又涨了一点经验值。
阅读全文
解决Tomcat数据连接池无法释放 WEB应用

解决Tomcat数据连接池无法释放

近段时间,公司的检测中心报表系统(SMC)的开发人员时不时找到我,说用户老是出现无法登录的情况。前些日子因为手头上有Jboss集群的测试工作,发现用户不能登录时,都是在Tomcat中将这个项目Reload一下就好了,不过只是治标而已,因为大概几个小时之后又会再次出现无法登录的情况。 今天上午,开发人员小毛又找到我,要我协助将这个问题根治一下,拖太久用户难保不投诉。 简单分析了一下,每次Reload一下就能解决无法登录的情况,自然而然就想到是不是session有问题呢?于是到Tomcat的manager界面看了下,发现并没有出现session粘滞暴涨的情况。 本来可以打开jconsole看看的,正好想起了之前用过的Tomcat检测工具:probe,于是直接从其他机器上scp了一个probe.war,丢到了webapps下面自动部署。 部署完之后,打开了probe网页管理后台发现smc项目的实时数据库连接数很高,而且只增不减!这个系统的数据池大小设置为200,此时已经是100+了,而且一直只升不降。好吧,当数据连接数达到200时,问题肯定会再次出现的。 于是我将这个问题告诉了小毛,要他自己去修改连接池释放机制(这里用的是项目单独设定的参数)。他说试过了,没有用,问下我有没有办法。 我这人记性一直欠佳,也很少去记忆一些参数设置,问我么?还我也只能问BD、GG了。。。 最终在强大的搜索引擎的帮助下,找到了相关参数说明,通过参考修改后成功解决了问题! Tomcat连接池无法释放的解决方法: 编辑项目的连接池配置文件:context.xml,参考下面的【数据库连接设置】参数说明,按照实际情况调整好各项数值,尤其是Maxidle和maxActive。并记得加上removeAbandoned=true 相关释放参数即可,我们这最终设置好的context.xml如下所示: 数据库连接设置参考: 附上作者的原文说明: 在配置DBCP连接池时,主要难以理解的主要有:removeAbandoned 、logAbandoned、removeAbandonedTimeout、maxWait这四个参数,设置了rmoveAbandoned=true那么在getNumActive()快要到getMaxActive()的时候,系统会进行无效的Connection的回收,回收的Connection为removeAbandonedTimeout(默认300秒)中设置的秒数后没有使用的Connection,激活回收机制好像是getNumActive()=getMaxActive()-2。 如果开启"removeAbandoned",那么连接在被认为泄露时可能被池回收. 这个机制在(getNumIdle() < 2) and (getNumActive() > getMaxActive() - 3)时被触发. 举例:当maxActive=20, 活动连接为18,空闲连接为1时可以触发"removeAbandoned".但是活动连接只有在没有被使用的时间超过"removeAbandonedTimeout"时才被删除,默认300秒.在resultset中游历不被计算为被使用. logAbandoned=true的话,将会在回收事件后,在log中打印出回收Connection的错误信息,包括在哪个地方用了Connection却忘记关闭了,在调试的时候很有用。 在这里私人建议maxWait的时间不要设得太长,maxWait如果设置太长那么客户端会等待很久才激发回收事件。 通过仁兄的资料,加深了我对连接池参数的理解,非常感谢!特附上原文地址:DBCP连接池配置参数说明及优化 ,以示尊重! 问题解决之后,就来玛思阁简单的记录一下,希望能帮到有需要的同行朋友。
阅读全文
LVS中采用Jboss作为RealServer的配置要点 WEB应用

LVS中采用Jboss作为RealServer的配置要点

 博客建站已过2个月了,大部分文章总是在记录博客的折腾史,估计大部分喜欢折腾的博主都有这样的时期吧!现在博客基本算是定型稳定,是时候写点与主题相关的博文了,否则,不知道的还以为我这是WP折腾博客呢! 这几天,老大发新年任务了,把新技术的研究就交给了我,其中又一项就是Jboss的集群。说实话,对于Jboss,我真的谈不上熟练,因为长期都在管理Tomcat平台。揽到这个任务,我倒也非常高兴,终于可以弄点新东西了! LVS+keepalived负载均衡架构我是比较熟悉的,一直用的Tomcat作为Webserver,想着换成Jboss应该也是手到擒来吧?没花多久时间,相关软件的安装和配置都已被我搞定,于是开始测试访问分发是否成功,结果发现采用jboss作为后端真实WEB主机,居然无法访问?ipvsadm状态中全是InActConn数据!而Kill掉它,启动同一台主机上的Tomcat则可以完美轮询,匪夷所思~~ 于是,各种搜各种测,终于找到了大概原因和方法: 原来,jboss作为RealServer时是需要调整监听IP的,否则就收不到正确的访问请求,如同敲错了门,自然无法打开jboss网页了! 几乎搜遍了,只找到了高版本Jboss的相关解决办法,就先贴上来分享一下: 这里只说一下standalone模式下的修改方法: ①. 使用vim编辑 jboss的配置文件standalone.xml: ②. 在vim中按下/或?,输入/interface>查找并定位到最后一个</interface>: ③. 在最后一个</interface>前面加上如下代码: ④. 然后将</interface>下一句中的public改成any,如下所示: ⑤. 最后使用 :wq 保存退出即可解决这个问题。 而我们苦逼公司用的是Jboss4的版本,根本不存在standalone模式,自然也就不存在相关xml配置文件了,而暂时又搜不到 Jboss4的解决方法,只好自己埋头研究解决了!等出结果了再来记录下。。。
阅读全文
借助PageSpeed,为Nginx网站服务器提速 WEB应用

借助PageSpeed,为Nginx网站服务器提速

网站加载速度越快,访客互动性、留住率和转换率就越高,这早已不是什么秘密。网站每延迟100毫秒,亚马逊的销售额就会减少1%;延迟增加500毫秒,这意味着谷歌的流量和收入就会减少20%。要是有一个办法可以为你的网站服务器提速,又不必升级到功能更强大的服务器,就没有理由不试一试这个办法。 我在本教程中将介绍如何优化Nginx网站服务器,以提升其性能。虽然Nginx网站服务器本身已俨然成为运行速度最快、可扩展性最佳的网站服务器之一,但是仍有众多方法可以调整优化其常规安装系统的性能。 举例说,有一个由谷歌开发的网站服务器模块,名为PageSpeed模块(https://developers.google.com/speed/pagespeed/module)。PageSpeed旨在缩短网页加载的时间,减少网站服务器的带宽使用量。最近,已发布了Nginx版本的PageSpeed模块(ngx_pagespeed)。作为一种有望为Nginx网站服务器提速的可行方法,我将演示如何在Nginx中启用并配置ngx_pagespeed模块。 PageSpeed的功能特性 PageSpeed模块可以使用数量众多的重写"过滤器",每个过滤器都可以选择性地开启/关闭,从而自动进行各种优化(比如,减小文档大小、减少HTTP请求数据、减少HTTP往返次数以及缩短DNS解析时间)。 下面是ngx_pagespeed支持的其中一些过滤器。想了解支持的全部过滤器,请参阅官方文档。 Collapse Whitespace(压缩空白):通过把HTML网页中的多处连续空白换成一处空白,减少带宽使用量。 Canonicalize JavaScript Libraries(规范化转换JavaScript库):通过自动把流行的JavaScript库换成免费托管的JavaScript库(比如由谷歌托管),减少带宽使用量。 Combine CSS(合并CSS):通过把多个CSS文件合并成一个CSS文件,减少HTTP请求数量。 Combine JavaScript(合并JavaScript):通过把多个JavaScript文件合并成一个JavaScript文件,减少HTTP请求数量。 Elide Attributes(省略属性):通过删除由默认属性指定的标签,缩小文档大小。 Extend Cache(扩展缓存):通过优化网页资源的可缓存性,减少带宽使用量。 Flatten CSS Imports(精简CSS导入):通过删除CSS文件中的@import,减少HTTP请求往返次数。 Lazyload Images(延时加载图片):延时加载在客户端浏览器上看不见的图片。 Minify JavaScript(缩小JavaScript):通过缩小JavaScript,减少带宽使用量。 Optimize Images(优化图片):通过引入更多的内嵌图片、压缩图片,或者将GIF图片转换成PNG图片,优化图片分发。 Pre-Resolve DNS(预解析DNS):通过预解析DNS,缩短DNS解析时间。 Prioritize Critical CSS(优化加载关键CSS规则):重写CSS文件,以便首先加载渲染页面的CSS规则。 与Apache网站服务器不一样,Nginx模块无法在运行时动态加载,而是必须在编译时加载。截至本文截稿时,ngx_pagespeed模块并未内置在随主要Linux发行版(比如Fedora 19)发布的Nginx程序包中。因而,想使用Nginx中的PageSpeed,你需要利用源代码来构建Nginx。 借助ngx_pagespeed,构建和安装Nginx 安装用于构建nginx和ngx_pagespeed的必备要素。 在Debian、Ubuntu或Linux Mint上: 在Fedora、CentOS或RHEL上: 下载并安装ngx_pagespeed源代码,如下所示。 ngx_pagespeed会被解压缩到/usr/local/nginx/modules/ngx_pagespeed-1.7.30.3-beta 下载预构建的PSOL(PageSpeed优化库,https://developers.google.com/speed/pagespeed/psol),并将它安装到ngx_pagespeed目录下: 从http://nginx.org/en/download.html,下载Nginx的最新稳定版。 最后,在ngx_pagespeed模块启用的情况下,编译Nginx,并安装它,如下所示。 你应该确认,ngx_pagespeed模块已添加到安装的Nginx系统上,如下所示。 配置Nginx中的ngx_pagespeed模块 想启用并配置ngx_pagespeed,就要编辑Nginx配置的server部分。nginx.conf的下面这个示例表明了如何指定一个或多个PageSpeed过滤器。 说到指定PageSpeed过滤器,有两种不同的级别可供你选择:CoreFilters和PassThrough。除非有所指定,否则默认情况下使用CoreFilters。 对新手用户而言:使用CoreFilters CoreFilters含有一系列PageSpeed过滤器,谷歌认为这些过滤器对大多数网站来说是安全的。如果启用CoreFilters,你就自动启用了一系列"安全"规则。所以,推荐新手用户采用这种方法。如果你愿意,也可以禁用CoreFilters中的某个或某些过滤器,或者选择性地启用额外的过滤器。下面这个例子表明了使用CoreFilters的ngx_pagespeed配置。 想了解CoreFilters中的全部过滤器,请参阅官方文档。 对高级用户而言:使用PassThrough 如果是高级用户,你可以使用PageThrough级别,你可以手动启用个别过滤器。 另外的配置步骤: 创建将由Nginx写入的一个文件缓存目录。 为了方便起见,为Nginx创建一个初始化脚本。 最后,启动Nginx。 注意:除了ngx_pagespeed外,你可能还需要定义额外的Nginx模块(比如HTTPS/SSL支持等),具体视需求而定。这种情况下,你需要在Nginx编译这个环节来添加这些模块。请参阅这篇教程(http://xmodulo.com/2014/01/compile-install-nginx-web-server.html),了解如何启用额外的Nginx模块。
阅读全文