标签归档:tomcat

Tomcat生产优化

1 建立JNDI;打开$TOMCAT_HOME/conf/context.xml,添加如下

<!--MySQL-->
    <Resource 
           name="jdbc/market" 
           auth="Container" 
           type="javax.sql.DataSource"
           maxActive="100" 
           maxIdle="30" 
           maxWait="10000"
           username="develop" 
           password="xxxxxx" 
           driverClassName="com.mysql.jdbc.Driver"
           url="jdbc:mysql://mysql:3306/market"
    />

<!--SQL Server-->

    <Resource 
           name="jdbc/market" 
           auth="Container" 
           type="javax.sql.DataSource"
           maxActive="100" 
           maxIdle="30" 
           maxWait="10000"
           username="sa" 
           password="xxxxxx" 
           driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
           url="jdbc:sqlserver://sqlserver:1433;DatabaseName=market"
    />

2 优化连接数及压缩选项;打开$TOMCAT_HOME/conf/server.xml,替换如下代码:

    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" URIEncoding="UTF-8"
               maxThreads="250" maxHttpHeaderSize="8192"
               disableUploadTimeout="true"
               acceptCount="440" emptySessionPath="true"
               enableLookups="false"
               compression="500" compressableMimeType="text/html,text/xml,text/plain,application/octet-stream"/>

3 优化JVM;打开$TOMCAT_HOME/bin/catalina.cmd(catalina.sh),在最上面添加如下

JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8
-server -Xms2048m -Xmx2048m
-XX:NewSize=512m -XX:MaxNewSize=512m -XX:PermSize=512m
-XX:MaxPermSize=512m -XX:+DisableExplicitGC"

4 修改Spring的连接,打开applicationContext.xml,修改如下:

<jee:jndi-lookup jndi-name="jdbc/market" id="dataSource"></jee:jndi-lookup>

Tomcat 7内存配置

网上查的到配置都是需要找catalina,然后在里面的JAVA_OPTS=”-Xms512m -Xmx1024m”进行设置,但我使用了service.bat将tomcat安装成了服务,在哪里设置?

其实查看service.bat就有了发现,service.bat是运行的tomcat7.exe,而我们知道,tomcat7.exe执行是靠tomcat7w.exe来设置JVM变量的

image于是,双击tomcat7w.exe,将对应的memory pool设置成相应的值就可以了;这里可以看出,Java Option也是在这里设置的

image

Windows Server 2003下nginx的安装与配置,反向代理tomcat应用

IIS6.0如果仅作为中间件的话是一个不错的选择,但想要完成反向代理等复杂的功能则还是需要一个更简便的应用服务器nginx

  1. 下载nginx
  2. 双击nginx.exe就可以启动了
  3. 修改conf/nginx.conf后,直接使用nginx.exe -s reload就可以重新加载了
  4. 要想关闭nginx 使用 nginx.exe -s stop或者nginx.exe -s quit
  5. 想要关闭nginx的ip访问,可以新建一个default server,将流量导向你自己的网站或返回错误代码(404,500),配置如下

a. 导向自己的网站

server {
    listen 80 default;
    rewrite ^(.*) http://blog.tohours.com permanent;
}

b. 返回500错误

server {
    listen 80 default;
    return 500;
}
  1. tomcat下载windows zip版的时候,要选择32-bit Windows zip的版本才有service.bat
  2. service.bat install Tomcat就可以把tomcat 安装成服务
  3. 如何把nginx安装成服务呢?下载winsw-1.8-bin.exe
  4. 更改名字为myapp.exe,放到nginx目录,新建myapp.xml文件,内容如下(修改为你的路径)
<service>
    <id>nginx</id>
    <name>nginx</name>
    <description>nginx</description>
    <executable>c:nginxnginx.exe</executable>
    <logpath>c:nginx</logpath>
    <logmode>roll</logmode>
    <depend></depend>
    <startargument>-p c:nginx</startargument>
    <stopargument>-p c:nginx -s stop</stopargument>
</service>
  1. 运行myapp.exe install,将会把nginx安装成nginx的服务
  2. 配置nginx到tomcat的代理,很遗憾,没找到 xxx.tohours.com到localhost:8080/xxx的写法
server {
    listen 80;
    server_name xxx.tohours.com;
    location / {
        proxy_pass http://localhost:8080/;
        proxy_redirect     off;
        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
        proxy_max_temp_file_size 0;
        proxy_connect_timeout      90;
        proxy_send_timeout         90;
        proxy_read_timeout         90;
        proxy_buffer_size          4k;
        proxy_buffers              4 32k;
        proxy_busy_buffers_size    64k;
        proxy_temp_file_write_size 64k;
    }
}

另外介绍一款工具,可以将Windows下的可执行文件变成服务:Windows Server 2003 Resource Kit Tools,具体使用方法参见这里

主要命令两个
1. instsrv Nginx c:\nginx\nginx.exe;
2. instsrv Nginx remove(当然nginx不适合这个建服务,因为nginx会提供两个进程,启动时会报错,结束时无法正确结束)