yum -y install apr apr-util
#tomcat 使用apr 来进行文件读取和网络传输,可以大大提升tomcat对静态文件的处理性能
wget
mv jdk-6u45-linux-x64.bin\?AuthParam\=1367468841_b708af07c630bfaf0b69be53d448b8ef jdk-6u45-linux-x64.bin
chmod a+x jdk-6u45-linux-x64.bin
./jdk-6u45-linux-x64.bin
mv jdk1.6.0_45/ /usr/local/java
vim /etc/profile
JAVA_HOME=/usr/local/java
CLASSPATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib
PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
export JAVA_HOME CLASSPATH PATH
source /etc/profile
wget
tar xvzf apache-tomcat-6.0.36.tar.gz
mv apache-tomcat-6.0.36 /usr/local/tomcat8080
cd /usr/local/tomcat8080/bin/
tar xvzf commons-daemon-native.tar.gz
cd commons-daemon-1.0.10-native-src/unix
./configure --with-java=/usr/local/java
make
groupadd -g 1000 tomcat
useradd -M -u 1000 -g 1000 -s /sbin/nologin tomcat
vim /etc/init.d/tomcat8080
#!/bin/sh
#chkconfig:35 24 43
#description:tomcat is web server
if [ -f /etc/init.d/functions ]; then
. /etc/init.d/functions
fi
prog=tomcat8080
JAVA_HOME=/usr/local/java
CATALINA_HOME=/usr/local/tomcat8080
DAEMON_HOME=/usr/local/tomcat8080/bin
TOMCAT_USER=tomcat
TMP_DIR=/tmp
PID_FILE=/var/run/${prog}.pid
CATALINA_BASE=/usr/local/tomcat8080
CATALINA_OPTS="-Djava.library.path=/usr/lib64"
CLASSPATH=\
$JAVA_HOME/lib/tools.jar:\
$CATALINA_HOME/bin/commons-daemon.jar:\
$CATALINA_HOME/bin/bootstrap.jar:$CATALINA_HOME/bin/tomcat-juli.jar
case "$1" in
start)
#
# Start Tomcat
#
echo -n $"Starting $prog: "
$DAEMON_HOME/commons-daemon-1.0.10-native-src/unix/jsvc \
-user $TOMCAT_USER \
-home $JAVA_HOME \
-Dcatalina.home=$CATALINA_HOME \
-Dcatalina.base=$CATALINA_BASE \
-Djava.io.tmpdir=$TMP_DIR \
-wait 10 \
-pidfile $PID_FILE \
-outfile $CATALINA_HOME/logs/catalina.out \
-errfile '&1' \
$CATALINA_OPTS \
-server -Xms1400m -Xmx1400m -Xss512k \
-cp $CLASSPATH \
org.apache.catalina.startup.Bootstrap
if [ $? -eq 0 ];then
success;echo
else
failure; echo ;
fi
#
# To get a verbose JVM
#-verbose \
# To get a debug of jsvc.
#-debug \
exit $?
;;
stop)
#
# Stop Tomcat
#
echo -n $"Stopping $prog:"
$DAEMON_HOME/commons-daemon-1.0.10-native-src/unix/jsvc \
-stop \
-pidfile $PID_FILE \
org.apache.catalina.startup.Bootstrap
if [ $? -eq 0 ];then
success;echo
else
failure; echo ;
fi
;;
*)
echo "Usage tomcat.sh start/stop"
exit 1;;
esac
vim /usr/local/tomcat/bin/catalina.sh
export JAVA_OPTS="-server -Xms12000m -Xmx12000m -Xss512k"
-server :以server模式运行
-Xms ,-Xmx:jvm的内存设置。jvm:java虚拟机 。我测试发现在物理内存的50%-80%之间最好
-Xss :线程的堆栈大小,一般不大于1M
vim /usr/local/tomcat/conf/server.xml
URIEncoding="UTF-8" minSpareThreads="25" maxSpareThreads="50"
enableLookups="false" disableUploadTimeout="true"
connectionTimeout="20000"
acceptCount="1024" maxThreads="1024" maxProcessors="1024" minProcessors="64"
redirectPort="8443" />
URIEncoding="UTF-8" 编码
minSpareThreads="25" 最小空闲的线程数
maxSpareThreads="50" 最大的空闲线程数,超过这个数字,tomcat就会自动关闭空闲的线程数
enableLookups="false" 反查域名,关闭
disableUploadTimeout="true"
connectionTimeout="20000" 连接超时,毫秒
acceptCount="300" 最大连接数
maxThreads="300" 最大线程数
maxProcessors="300" minProcessors="5" 最大和最小连接线程数
chkconfig -add tomcat8080
chkconfig tomcat8080 on
service tomcat8080 start
2,多实例运行tomcat
tomcat并发能力很低,所以一般采用单机多实例来跑,然后采用nginx反向代理来做,或者其他方法来实现负载均衡
/bin/cp -afr /usr/local/tomcat8080 /usr/local/tomcat8088
vim /usr/local/tomcat/conf/server.xml
#将8080端口改为8088
URIEncoding="UTF-8" minSpareThreads="25" maxSpareThreads="50"
enableLookups="false" disableUploadTimeout="true"
connectionTimeout="20000"
acceptCount="1024" maxThreads="1024" maxProcessors="1024" minProcessors="64"
redirectPort="8443" />
##将8009端口改为8010
vim /etc/init.d/tomcat8088
#!/bin/sh
#chkconfig:35 24 43
#description:tomcat is web server
if [ -f /etc/init.d/functions ]; then
. /etc/init.d/functions
fi
prog=tomcat8088
JAVA_HOME=/usr/local/java
CATALINA_HOME=/usr/local/tomcat8088
DAEMON_HOME=/usr/local/tomcat8088/bin
TOMCAT_USER=tomcat
TMP_DIR=/tmp
PID_FILE=/var/run/${prog}.pid
CATALINA_BASE=/usr/local/tomcat8088
CATALINA_OPTS="-Djava.library.path=/usr/lib64"
CLASSPATH=\
$JAVA_HOME/lib/tools.jar:\
$CATALINA_HOME/bin/commons-daemon.jar:\
$CATALINA_HOME/bin/bootstrap.jar:$CATALINA_HOME/bin/tomcat-juli.jar
case "$1" in
start)
echo -n $"Starting $prog: "
$DAEMON_HOME/commons-daemon-1.0.10-native-src/unix/jsvc \
-user $TOMCAT_USER \
-home $JAVA_HOME \
-Dcatalina.home=$CATALINA_HOME \
-Dcatalina.base=$CATALINA_BASE \
-Djava.io.tmpdir=$TMP_DIR \
-wait 10 \
-pidfile $PID_FILE \
-outfile $CATALINA_HOME/logs/catalina.out \
-errfile '&1' \
$CATALINA_OPTS \
-server -Xms1400m -Xmx1400m -Xss512k \
-cp $CLASSPATH \
org.apache.catalina.startup.Bootstrap
if [ $? -eq 0 ];then
success;echo
else
failure; echo ;
fi
;;
stop)
echo -n $"Stopping $prog:"
$DAEMON_HOME/commons-daemon-1.0.10-native-src/unix/jsvc \
-stop \
-pidfile $PID_FILE \
org.apache.catalina.startup.Bootstrap
if [ $? -eq 0 ];then
success;echo
else
failure; echo ;
fi
;;
*)
echo "Usage tomcat.sh start/stop"
exit 1;;
esac
chkconfig -add tomcat8088
chkconfig tomcat8088 on
service tomcat8088 start
yum -y install pcre-devel openssl-devel
wget
tar xvzf nginx-1.0.15.tar.gz
cd nginx-1.0.15
wget
tar xvzf ngx_cache_purge-2.1.tar.gz
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-http_flv_module --with-http_dav_module --with-http_gzip_static_module --add-module=ngx_cache_purge-2.1
make && make install
vim /usr/local/nginx/conf/nginx.conf
user tomcat tomcat;
worker_processes 1;
error_log logs/error.log crit;
pid /usr/local/nginx/nginx.pid;
worker_rlimit_nofile 204800;
events
{
use epoll;
worker_connections 204800;
}
http
{
include mime.types;
default_type application/octet-stream;
charset utf-8;
server_names_hash_bucket_size 128;
client_header_buffer_size 2k;
large_client_header_buffers 4 4k;
client_max_body_size 8m;
sendfile on;
tcp_nopush on;
keepalive_timeout 60;
open_file_cache max=204800 inactive=20s;
open_file_cache_min_uses 1;
open_file_cache_valid 30s;
tcp_nodelay on;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml;
gzip_vary on;
proxy_temp_path /usr/local/nginx/proxy_temp;
proxy_cache_path /dev/shm/ levels=1:2 keys_zone=tomcat_cache:200m inactive=1d max_size=8g;
upstream tomcatpoll {
server 127.0.0.1:8080 weight=2 max_fails=2 fail_timeout=30s;
server 127.0.0.1:8088 weight=1 max_fails=2 fail_timeout=30s;
}
server
{
listen 80;
server_name
index index.html index.html index.php;
# root /usr/local/tomcat/webapps/ROOT;
location /status
{
stub_status on;
}
location ~ /purge(/.*){
proxy_cache_purge tomcat_cache $host$1$is_args$args;
}
location /{
proxy_set_header Host $host;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 4m;
client_body_buffer_size 256k;
proxy_pass
proxy_connect_timeout 30;
proxy_send_timeout 30;
proxy_read_timeout 60;
proxy_buffer_size 256k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
proxy_temp_file_write_size 256k;
proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;
proxy_max_temp_file_size 12m;
proxy_cache tomcat_cache;
proxy_cache_valid 200 304 12h;
proxy_cache_key $host$uri$is_args$args;
}
log_format access '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" $http_x_forwarded_for "$upstream_cache_status"';
access_log logs/access.log access;
}
}
ulimit -SHn 51200
vim /etc/sysctl.conf
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
net.ipv4.tcp_max_tw_buckets = 6000
net.ipv4.tcp_sack = 1
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_rmem = 4096 87380 4194304
net.ipv4.tcp_wmem = 4096 16384 4194304
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.core.netdev_max_backlog = 262144
net.core.somaxconn = 262144
net.ipv4.tcp_max_orphans = 3276800
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_mem = 94500000 915000000 927000000
net.ipv4.tcp_fin_timeout = 1
net.ipv4.tcp_keepalive_time = 30
net.ipv4.ip_local_port_range = 1024 65000
阅读(3603) | 评论(0) | 转发(0) |