本帖最后由 lqph3387 于 2011-1-6 08:38 编辑
在resin的官方http://www.caucho.com/下载resin相应的版本,本文下载的版本是resin-4.0.7.tar.gz ,然后上传至/usr/local/src目录
# tar -zxvf resin-4.0.7.tar.gz
# cd resin-4.0.7
# ./configure --prefix=/usr/local/www/resin --with-java-home=/usr/local/java
# make # make install
# groupadd resin
# useradd -g resin -s /sbin/nologin -M resin
# chown -R resin.resin /usr/local/www/resin
# vi /usr/local/www/resin/conf/resin.xml
修改如下两行内容:
<user-name>resin</user-name>
<group-name>resin</group-name>
/usr/local/www/resin/bin/resin.sh start
用http://hostip:8080即可访问到resin的默认页面
二、添加resin到系统服务
将make install生成的$RESIN_HOME/init.d/resin复制到/etc/init.d/resin
# cp init.d/resin /etc/init.d/resin
# chmod a+x /etc/init.d/resin
# vi /etc/init.d/resin添加如下两行
# chkconfig: 345 85 15
# description: Resin is a Java Web server.把type log_daemon_msg 1> /dev/null
修改为type echo 1> /dev/null
修改
case "$1" in
start)
....
stop)
.....
中的log_daemon_msg和log_end_msg为echo然后就可以用service resin start|stop来启动和停止resin了
三、resin管理员控制台
注:修改resin配置文件之前要先停止resin
使用http://hostip:8080 打开resin的默认页面
点击Administration is available here处的here
创建一个管理员
# cd /usr/local/www/resin/conf/
# service resin stop
# mv admin-users.xml.generated admin-users.xml
# service resin start然后就可以使用刚才创建的管理员登陆resin管理员控制台了
四、resin优化
1、优化JVM参数
修改resin.conf文件,在<server-default>节点下增加配置JVM参数的子节点<jvm-arg>。 -Xmx和-Xms的值需要根据服务器内存的大小调整,对于多数应用来说,-Xmx配置成1024M,完全能满足使用要求。通常将-Xms与-Xmx选项的值设置为相同,-Xmn的值为-Xmx的1/4。
<server-default>
<jvm-arg>-Xms1024m</jvm-arg>
<jvm-arg>-Xmx1024m</jvm-arg>
<jvm-arg>-Xmn256m</jvm-arg>
<jvm-arg>-XX:PermSize=128m</jvm-arg>
<jvm-arg>-XX:MaxPermSize=256m</jvm-arg>
<jvm-arg>-Dcom.sun.management.jmxremote</jvm-arg>
</server-default>
2、调整图片Cache图片文件的时间
<web-app-default>
<cache-mapping url-pattern="*.gif" expires="6000s"/>
<cache-mapping url-pattern="*.jpg" expires="6000s"/>
<cache-mapping url-pattern="*.png" expires="6000s"/>
</web-app-default>
3、调整线程池的最大线程数
<server-default>
<thread-max>1024</thread-max>
</server-default>4、日志输出
如果不配置stdout-log,那么resin会把System.out输出的信息,自动输出到${resinHome}/log/jvm-default.log文件中,且这个文件不会按天存储,随着时间推移,这个文件会越来越大,最后影响系统效率。
<host>
<stdout-log path="${resinHome}/log/stdout.log" timestamp="[%Y-%m-%d %H:%M:%S.%s]" rollover-period="1D"/>
<stderr-log path="${resinHome}/log/stderr.log" timestamp="[%Y-%m-%d %H:%M:%S.%s]" rollover-period="1D"/>
</host>5、resin-server TIME_WAIT 过多的处理
thread-max指定了最大连接数,socket-timeout是socket超时时间
keepalive-max指定了长连接的数量,这是可以重复使用的连接,netstat -an时系统可以看到响应数量的ESTABLISHED状态
设定keepalive-max和把keepalive-timeout调小可以减少TIME_WAIT的数量。
在<server-default>节点下增加配置
<thread-max>10000</thread-max>
<socket-timeout>30s</socket-timeout>
<keepalive-max>512</keepalive-max>
<keepalive-timeout>60s</keepalive-timeout>6、调整检查程序更新时间间隔的配置
Resin 会在一个指定的周期内,检查一下web-app目录下的classes、jsp、jar以及配置文件是否更新,并且根据检查的情况,确定是否重新装载这些文件。对于生产系统来说,不会经常更新文件,时间间隔应该加长,提高系统的效率。文本框中配置的时间间隔为20分钟。
<dependency-check-interval>1200s</dependency-check-interval>
本帖最后由 lqph3387 于 2010-12-14 15:08 编辑
<Host name="www.cmdi.com" appBase="/data/www/wwwroot/www.cmdi.com"
unpackWARs="false" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="./" debug="0" reloadable="true" crossContext="true"/>
</Host>
以上的内容就是在linux系统中创建/data/www/wwwroot/www.cmdi.com文件夹作为www.cmdi.com这个域名的主目录,如果想配置这个域名的访问日志,如下:
<Host name="www.cmdi.com" appBase="/data/www/wwwroot/www.cmdi.com"
unpackWARs="false" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="./" debug="0" reloadable="true" crossContext="true"/>
<Logger className="org.apache.catalina.logger.FileLogger" directory="/data/www/logs" prefix="www_cmdi_com_access." suffix=".log" pattern="combined" timestamp="true"/>
</Host>
在配置apache多个虚拟主机的时候,访问总是指向第一个虚拟主机,
加上 NameVirtualHost * 后解决问题.
NameVirtualHost *
<VirtualHost *>
DocumentRoot "F:/web/"
ServerName localhost
</VirtualHost>
<VirtualHost *>
DocumentRoot "F:/web/aa/"
ServerName *.test.com
</VirtualHost>
本帖最后由 lqph3387 于 2010-12-14 15:04 编辑
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="/" docBase="./" debug="1" reloadable="true">
<Resource name="jndi-test" auth="Container"
type="javax.sql.DataSource"
driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbcracle:thin192.168.1.210:1521:database" username="username"
password="password" maxActive="100" maxIdle="10" maxWait="600" /> </Context>
<Valve className="org.apache.catalina.valves.FastCommonAccessLogValve" directory="logs" prefix="localhost_access." suffix=".log"
pattern="combined" resolveHosts="false"/>
</Host>
本帖最后由 lqph3387 于 2011-1-5 13:59 编辑
一,在jboss的官方http://www.jboss.com/下载jboss相应的版本,本文下载的版本是jboss-5.0.0.GA-jdk6.zip,然后上传至/usr/local/src目录
[root@host1 ~]# cd /usr/local/src
[root@host1 src]# unzip jboss-5.0.0.GA-jdk6.zip
[root@host1 src]# mv jboss-5.0.0.GA /usr/local/jboss
二,设置jboss的环境变量
[root@host1 src]#vim /etc/profile
在PATH的末尾追加jboss的bin目录,如:PATH=$PATH:/opt/jdk1.6.0_15/bin:/opt/jdk1.6.0_15/jre/bin::/usr/local/jboss/bin
三,启动并测试
[root@host1 src]# run.sh -b 192.168.12.1
[root@host1 jbossweb.sar]# ps aux |grep jboss
root 24938 0.0 0.0 63856 1144 ? S 08:28 0:00 /bin/sh /usr/local/jboss/bin/run.sh -b 192.168.12.1
root 24974 1.1 1.7 1014736 291672 ? Sl 08:28 1:29 /opt/jdk1.6.0_15//bin/java -Dprogram.name=run.sh -server -Xms128m -Xmx512m -XX:MaxPermSize=256m -Dorg.jboss.resolver.warning=true -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Djava.net.preferIPv4Stack=true -Djava.endorsed.dirs=/usr/local/jboss/lib/endorsed -classpath /usr/local/jboss/bin/run.jar:/opt/jdk1.6.0_15//lib/tools.jar org.jboss.Main -b 192.168.12.1
root 25738 0.0 0.0 61176 748 pts/1 S+ 10:37 0:00 grep jboss
通过浏览器访问http://192.168.12.1:8080/出现jboss的主页面就安装成功了
四,备注
1,默认启动jbosss,启动的是default主机,与它平行的还有all minimal standard web
2,关闭jboss的命令为 shutdown.sh -s 192.168.12.1
3,后台启动jboss的命令为 nohup run.sh -b 192.168.12.1 >/dev/null &
4,默认的default配置文件为 /usr/local/jboss/server/default/deploy/jbossweb.sar/server.xml
5,默认的default的网站根目录为 /usr/local/jboss/server/default/deploy/ROOT.war
6,通过http://192.168.12.1:8080/status可看出服务器的性能状况,连接状况等
<IfModule mpm_prefork_module>
ServerLimit 2000
StartServers 10
MinSpareServers 10
MaxSpareServers 15
MaxClients 1000
MaxRequestsPerChild 10000
</IfModule>
<IfModule mpm_worker_module>
StartServers 3
MaxClients 600
MinSpareThreads 50
MaxSpareThreads 100
ThreadsPerChild 100
MaxRequestsPerChild 10000
</IfModule>其他部分,为默认参数。
如何设置httpd-mpm.conf 的参数呢?
启动apache时,出现这个错误。
原因为:在httpd.conf 中配置了多个虚拟主机,配置文件形式为 <VirtualHost *:80>
解决办法 把<VirtualHost *:80> 改为 <VirtualHost *>
虽然没有警告了,但是问题又出来了,多个虚拟主机中只能解析第一个,后边的所有域名都访问到第一个来。解决办法为:
http://mylinux.5d6d.com/thread-491-1-1.html
首先确定apache是使用哪种工作模式,是prefork模式还是worker模式,查看方法
apachectl -l
查看后显示
Compiled in modules:
core.c
mod_authn_file.c
mod_authn_default.c
mod_authz_host.c
mod_authz_groupfile.c
mod_authz_user.c
mod_authz_default.c
mod_auth_basic.c
mod_include.c
mod_filter.c
mod_log_config.c
mod_env.c
mod_setenvif.c
prefork.c
http_core.c
mod_mime.c
mod_status.c
mod_autoindex.c
mod_asis.c
mod_cgi.c
mod_negotiation.c
mod_dir.c
mod_actions.c
mod_alias.c
mod_so.c
看到红色加粗部分,显示 prefork ,所以是prefork模式。
那么httpd-mpm.conf 中就该配置 # prefork MPM 部分了,prefork模式的默认配置是:
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 0
</IfModule>
如何去评估这些参数呢?先来看看各个参数的含义。
httpd.conf 中加入
<IfModule mod_expires.c>
ExpiresActive on
ExpiresByType image/gif "access plus 1 days"
ExpiresByType image/jpeg "access plus 24 hours"
ExpiresByType image/png "access plus 24 hours"
ExpiresByType text/css "now plus 2 hour"
ExpiresByType application/x-javascript "now plus 2 hours"
ExpiresByType application/x-shockwave-flash "now plus 2 hours"
ExpiresDefault "now plus 0 min"
</IfModule>
注释:
Expires 语法如下:
ExpiresByType type/encoding "<base> [plus] <num> <type>}*"
其中<base>是下列之一:
access
now (等价于'access')
modification
plus关键字是可选的。
<num>必须是整数,
<type>是下列之一:
years
months
weeks
days
hours
minutes
seconds
参考: http://apache.chinahtml.com/mod/mod_expires.html
虚拟主机配置文件中,需要加入
<Directory /data/web/test>
AllowOverride AuthConfig
</Directory>
然后在虚拟主机的主目录,即DocumentRoot 目录下
vi /data/web/test/.htaccess
加入
AuthName "frank share web"
AuthType Basic
AuthUserFile /data/web/test/.htpasswd
require valid-user
保存后,然后
创建apache的验证用户
htpasswd -c /data/web/test/.htpasswd test
#第一次创建用户要用到-c 参数 第2次添加用户,就不用-c参数
如果你想修改密码,可以如下
htpasswd -m .htpasswd test2
重启apache,即可。
到此,你已经配置完成。下面介绍另一种方式:
##################################
vi http.conf
在相应的虚拟主机配置文件段,加入
<Directory >
AllowOverride AuthConfig
AuthName "自定义的"
AuthType Basic
AuthUserFile /data/.htpasswd // 这个目录你可以随便写一个,没有限制
require valid-user
</Directory>
保存后,然后
创建apache的验证用户
htpasswd -c /data/.htpasswd test
默认情况下,如果apache中调用了mod_deflate ,那么所有虚拟主机都会启用gzip压缩功能。但有时候会遇到某个虚拟主机不想启用gzip的应用,这如何设置呢?
只要在该虚拟主机中加入一下代码即可。
<Location /data/web/example>
SetOutputFilter DEFLATE
</Location>这里的 /data/web/example 为该虚拟主机的主目录。
架构是 LAMP , 上传文件的操作,并没有连接mysql,但是却使用了php资源,所以修改设置,不仅要设置apache还要设置php.ini
1. apache httpd.conf 的设置
Timeout 600 这个可以设置成 3600, 单位是s
2. php.ini 相关的参数
file_uploads = on ; #默认为开
upload_max_filesize = 1024M ; #上传最大值
post_max_size = 1024M ; #通过表单POST给PHP的所能接收的最大值
如果还不行,那就修改以下几个参数吧。
max_execution_time = 30000000000 ; #每个php脚本的最大执行时间,秒。改的大大的…
max_input_time = 600000000 ; #传送请求数据的最大时间,秒。改的大大的…
memory_limit = 5000M ; #一个脚本占用内存的上限。这个不建议太大。万一有攻击,你的机器就崩溃了。建议最高256M。
在APACHE的httpd.conf中,KeepAlive指的是保持连接活跃,类似于Mysql的永久连接。换一句话说,如果将KeepAlive设置为On,那么来自同一客户端的请求就不需要再一次连接,避免每次请求都要新建一个连接而加重服务器的负担。
KeepAlive的连接活跃时间当然是受KeepAliveTimeOut限制的。如果第二次请求和第一次请求之间超过KeepAliveTimeOut的时间的话,第一次连接就会中断,再新建第二个连接。
所以,一般情况下,图片较多的网站应该把KeepAlive设为On。但是KeepAliveTimeOut应该设置为多少秒就是一个值得讨论的问题了。
如果KeepAliveTimeOut设置的时间过短,例如设置为1秒,那么APACHE就会频繁的建立新连接,当然会耗费不少的资源;反过来,如果KeepAliveTimeOut设置的时间过长,例如设置为300秒,那么APACHE中肯定有很多无用的连接会占用服务器的资源,也不是一件好事。
所以,到底要把KeepAliveTimeOut设置为多少,要看网站的流量、服务器的配置而定。
其实,这和MySql的机制有点相似,KeepAlive相当于mysql_connect或mysql_pconnect,KeepAliveTimeOut相当于wait_timeout。
以下是我的配置: KeepAlive On KeepAliveTimeout 3 考虑到我的网站上有不少的图片,所以将KeepAlive设为On,一般的页面两次请求间隔不会超过3秒,所以这样设置,至尽运行状况良好
转自:http://edu.cnzz.cn/NewsInfo/17275.aspx
需求:要把访问域名 www.domain1.com 的域名转发到 www.domain2.com 上
实现:
在相关的虚拟主机中增加
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.domain1.com$
RewriteRule ^(.*)$ http://www.domain2.com/$1 [R=301,L]
</IfModule>如果是多个域名重定向到一个域名
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.domain.com[OR]
RewriteCond %{HTTP_HOST} ^www.domain1.com$
RewriteRule ^(.*)$ http://www.domain2.com/$1 [R=301,L]
</IfModule>
KeepAlive 意思为是否长连接。 后边可以设置 On 或者 Off
简单理解就是这样: 如果设置成On,那么当apache完成用户的请求后,那么apache进程不会断开用户的请求连接,依然保持连接状态。设置成Off则当apache完成用户的请求后,那么apache进程会立即断开和用户的请求连接。
如果,完成用户的连接依然连接,这样的好处是:当该用户的请求在过来时,apache会用这个已经建立的连接,不需要重新创建连接。这样会节省CPU的资源。但是却耗费了内存。为什么呢?可以假设这样的场景。假如keepalive 超时时间为10s,而每1s中有100个用户请求访问,每个用户3次连接,每个连接耗费2M内存,那么10s内建立的连接次数为1000次(跟用户每s请求次数无关),消耗内存为1000*2=2000M,相反,如果不保持长连接,同样的环境场景下,每1s内有100*3个连接,下一秒还是100*3个连接,也就是说永远都是100*3个连接,那么1s内甚至10s内消耗的内存为100*3*2=600M。 然而,在这10s内创建的连接次数为100*3*10=3000次,这样肯定消耗了更多的cpu资源。毕竟每次tcp连接都是需要cpu去处理的。
问题来了,既然知道长连接与否的利与弊,那么如何判定什么时候On,什么时候Off?
在上面的举例中,涉及到了一个数,那就是每个用户在1s内请求的次数,你再回去好好看看,如果把3改为1,是不是10s内得到的连接次数总和是一样的。对!那么这样无论是On还是Off,消耗的CPU资源是一样的。所以,我们考虑3种情况:
1。用户浏览一个网页时,除了网页本身外,还引用了多个 javascript 文件,多个 css 文件,多个图片文件,并且这些文件都在同一个 HTTP 服务器上。
2。用户浏览一个网页时,除了网页本身外,还引用一个 javascript 文件,一个图片文件。
3。用户浏览的是一个动态网页,由程序即时生成内容,并且不引用其他内容。
对于上面3中情况,我认为:1 最适合打开 KeepAlive ,2 随意,3 最适合关闭 KeepAlive(连接消耗的内存比较大)
总结一下:
在内存非常充足的服务器上,不管是否关闭 KeepAlive 功能,服务器性能不会有明显变化;
如果服务器内存较少,或者服务器有非常大量的文件系统访问时,或者主要处理动态网页服务,关闭 KeepAlive 后可以节省很多内存,而节省出来的内存用于文件系统Cache,可以提高文件系统访问的性能,并且系统会更加稳定。
目前的服务器,CPU很强,所以不用考虑频繁的tcp连接对cpu造成的压力,那还让它长连接干什么,故,建议关闭你的长连接吧!!!
PS: 如果,你的服务器上请求量很大,那你最好还是关闭这个参数吧。我试过一次,打开长连接,并且设置超时时间为30s,结果仅仅十几s就把所有的httpd进程跑满。这样很危险的,直接让用户等待,等30s,这不扯淡嘛?即使是你设置成3s,照样会让用户等待3s,这样很不合理的。所以,归根结蒂还是关闭长连接吧,这样效率会更高。
- «
- 1
- ...
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- ...
- 66
- »