Tomcat优化实践——网站运维

做为底层码农,其实并不关心项目的优化!然而现在本身却不得不面对这样的问题,服务器的优化也许是最早优化的选择。

这里我就分享一下,虽然有些不足!但但愿有所分享和帮助! java


1、服务器配置

先介绍一下服务器,在阿里云上买的包月服务器69个大洋,做为底层的码农还真的出血了。同时也在阿里云旗下的万网 注册了yi18.net域名
CPU核数:1核
内存大小:512MB
系统名称:CentOS 6.3 64位 安全加固版
宽带:1M
服务器地址:www.yi18.net
web服务器:Tomcat8

linux 安装 tomcat能够做为安装的产考,这里就很少说。本觉得一切就绪,能够高高兴兴的享受本身的成就,但问题来了,Tomcat运行一段时间就宕机!因而不得不出现了下文。 linux

首先Tomcat8仍是alpha版本内测版本,但我仍是没有怀疑是Tomcat的问题,因此不等不来配置Tomcat。 web


2、配置Tomcat自带的管理

Tomcat本身的Manager
配置文件conf/tomcat-users.xml
    角色
tomcat

  • manager-gui -容许访问的HTML界面和状态页面
  • manager-script - 容许访问文本界面和状态页面
  • manager-jmx - 容许访问JMX代理和状态页
  • manager-status - 容许访问状态页面只   
    与用户
    manager-gui的做用不该该被授予不管是manager-scriptmanager-jmx的角色。
<role rolename="manager-gui"/>
 <user username="tomcat" password="s3cret" roles="manager-gui"/>
我这里看到的JVM的信息
空闲内存: 37.12 MB 总内存: 86.94 MB 最大内存: 237.81 MB

3、修改内存配置

这篇博客 http://my.oschina.net/xianggao/blog/83823 比较详细的介绍了Tomcat的一下内存。
JVM内存分配设置的参数有四个

-Xmx    Java Heap最大值,默认值为物理内存的1/4;
-Xms    Java Heap初始值,Server端JVM最好将-Xms和-Xmx设为相同值,开发测试机JVM能够保留默认值;
-Xmn    Java Heap Young区大小,不熟悉最好保留默认值;
-Xss      每一个线程的Stack大小,不熟悉最好保留默认值;

-XX:PermSize:设定内存的永久保存区域;
-XX:MaxPermSize:设定最大内存的永久保存区域;
-XX:PermSize:设定内存的永久保存区域;
-XX:NewSize:设置JVM堆的‘新生代’的默认大小;
-XX:MaxNewSize:设置JVM堆的‘新生代’的最大大小; 安全

其实咱们配置的基本上自由前面两个!贴出个人配置
要添加在tomcat 的bin 下catalina.sh 里,位置cygwin=false前 。 服务器

# OS specific support.  $var _must_ be set to either true or false.

JAVA_OPTS="-Xms128m -Xmx128m"

cygwin=false

因为我这里512M的物理总内存,网上建议用256M 但我这里用的MYSQL,因此内存设置在128M,不过也高兴得太早,Tomcat仍是会出现自动关闭,查看log仍是内存分配的问题!看来的我程序有问题,在作java web时通常不会考虑内存的,看来我错了,最后我不等不把 最大内存改成:-Xmx100m,
如今JVM信息,空闲: 14.16 MB 总内存: 100.56 MB 最大: 100.56 MB ,虽然系统慢了,但宕机就概率就减小了!慢总比错误好点。看来内存真重要! cookie

4、配置service.xml

清楚没必要要的信息 session

在真实的部署下仍是要清空webapps下的目录下全部内容 app

清理一下 logging.properties ,以避免产生没必要要的日志文件。
清理service.xml保留基本信息 webapp

<?xml version='1.0' encoding='utf-8'?>

<Server port="8005" shutdown="SHUTDOWN">
   <Service name="Catalina">
       <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
        maxThreads="150" minSpareThreads="4"/>
       <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" executor="tomcatThreadPool"/>
      <Engine name="Catalina" defaultHost="localhost">
      <Host name="localhost"  appBase="webapps"
            unpackWARs="false" autoDeploy="false"
	     xmlValidation="false" xmlNamespaceAware="false">
	<Context path="/yi18" docBase="/home/www/yi18"  reloadbale="false"></Context>
      </Host>
    </Engine>
  </Service>
</Server>

我这里就只添加了线程池,tomcatThreadPool

5、Session的配置

在默认的状况下Tomcat的sessionID 为JSESSIONID,而JSESSiONID是Tomcat特指的Cookie。虽然我这里没有用上Tomcat中的Session。但修改这个session cookie值也是必要的。个人配置以下

<Context docBase="/home/www/yi18"path="/yi18"reloadable="true" 
	sessionCookieName="yi18_net"/>

因此这里的JSESSiONID就变成了yi18_net,其实也没有什么功能,只是以为高端大气上档次。

本觉得一切顺利,但本身的程序的确问题大,www.yi18.net访问依然问题多多!
在附上Nginx的优化配置http://my.oschina.net/mynote/blog/181612

相关文章
相关标签/搜索