单点登录之 Cas优化篇

来源:互联网 发布:张艺兴发展前景知乎 编辑:程序博客网 时间:2024/06/07 17:07

        最近做高校云平台,因为在这套平台下有多个系统在一起运行着,各个系统间都有一定的联系,所以该云平台采用单点登录,采用的cas。但是当我们系统开发完成以后,在进行考试测试的时候,同时大约有300多人同时进行登陆,输入网址以后根本跳转不到登陆页,后来就想着该如何去优化他。

        首先我考虑的是,硬件的配置是不是不行,确实硬件的配置很低端,4G内存,500G硬盘,winserver2008 的,带宽是100M的,但是这个问题就要掏钱的,所以我们也不能解决。所以只能考虑优化我们的程序了!

        首先我们打开网络监控,输入网址,发现有两个请求一直收不到回应,如下图所示。

       

         图中可以看到这两个JS是从google官网下载,但是现在google不能访问了,所以请求总是不能发送出去,并一直处于发送状态。这样频繁的尝试发送,就会占用很大一份带宽,并且占用处理器的时间,来处理这件事情。所以我们尝试将这两个js下载下来,放在本地,并加载本地的js。这个js在cas\WEB-INF\view\jsp\default\ui\includes 下的bottom.jsp中, 可以看到将原来从google下载的js,存放到本地了,并加载本地的js。

     </div>         <div id="footer" class="fl-panel fl-note fl-bevel-white fl-font-size-80">               <a id="jasig" href="http://www.jasig.org" title="go to Jasig home page"></a>               <div id="copyright">                    <p>Copyright &copy; 2005 - 2012 Jasig, Inc. All rights reserved.</p>                    <p>Powered by <a href="http://www.jasig.org/cas">Jasig Central Authentication Service <%=org.jasig.cas.CasVersion.getVersion()%></a></p>                </div>              </div>           </div>        </div><!--这两个js放在本地,运行时加载本地的js -->        <script type="text/javascript" src="../../../../../../jquery.min.js"></script>        <script type="text/javascript" src="../../../../../../jquery-ui.min.js"></script><!--  原来是从google下载的<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>        <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/jquery-ui.min.js"></script>-->        <script type="text/javascript" src="<c:url value="/js/cas.js" />"></script>    </body></html>
        这样修改以后就会减少一部分占用处理器时间,并占用少的带宽。但是这样也没有解决问题,然后我们又尝试配置一下数据库的连接池,连接池分为两种,一中是配置在tomcat中,部署在该tomcat中的所有应用都使用,另外一种是配置在单独的应用中。

       配置数据库连接池分为两步,第一步cas\META-INF下建立一个context.xml文件,并写入如下代码

<?xml version="1.0" encoding="UTF-8"?><Context path="/">      <Resource        name="myDS"        type="javax.sql.DataSource"        driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"        maxIdle="200"        maxWait="5000"        username="sa"         password="123456"        url="jdbc:microsoft:@sqlserver://192.168.24.233:1433;DatabaseName=ITOO_Authority"        maxActive="150"/>     <!--name:DataSource的名称-->   <!--type:数据源对应的java类型,一般设计为javax.sql.DataSource-->   <!--username:数据库登陆名-->   <!--password:数据库登陆密码-->   <!--driverClassName:指定数据库JDBC驱动程序-->   <!--url:指定数据库的URL-->   <!--maxIdle:连接池处于空闲状态的数据库连接的最大数目,取0表示不受限制-->   <!--maxWait:连接池中数据库连接处于空闲状态的最长时间(以毫秒为单位),取0表示无限制等待时间-->   <!--maxActive:连接池处于活动状态的数据库连接的最大数目,去0表示不受限制-->  </Context> 

           然后再cas\WEB-INF下的web.xml中加入如下代码

<resource-ref><res-ref-name>jdbc/myDS</res-ref-name><!-- myDs跟context.xml中的NAME一致--><res-type>javax.sql.DataSource</res-type><res-auth>Container</res-auth></resource-ref>

          这样我们数据库的连接池就配置好了,但是连接池的数目应该根据我们实际情况来设定。这样优化之后,速度会提升很多,但可能还有些不满足要求,所以后来又想搭建一个cas集群,一个tomcat 处理的用户数量有限,那个多几个tomcat就会有更好的处理速度,用数量换取质量。至于如何搭建tomcat 集群,将在下一篇文章中进行讲解!敬请期待!



1 0
原创粉丝点击