Linux解决Too many open files的方法

Issue:
How do I set the maximum number of files allowed to be open on a system
Resolution:
The current setting for maximum number of open files can be viewed with the command:

ulimit -n

This number indicates the maximum number of files normal users (i.e. non-root) can have open in a single session. Note that for the root user, ulimit -n will sometimes output 1024 even after following the procedure to increase the maximum number of open files. This won’t effect root’s ability to open large numbers of files, as only normal users are bound by this value.

To increase the maximum number of open files beyond the default of 1024, two changes to the system may be necessary. In these examples, we will increase the maximum number of open files to the arbitrary value of 2048. All changes need to be made by the root user and users will need to log out and log back in before the changes will take effect.

1. Configure the system to accept the desired value for maximum number of open files Check the value in /proc/sys/fs/file-max to see if it is larger than the value needed for the maximum number of open files:

# cat /proc/sys/fs/file-max

If the value isn’t large enough, echo an appropriate number into the variable and add the change to /etc/sysctl.conf to make it persistent across reboots. If the number is already larger than the value you wish to use, skip to step 2.

# echo 2048 > /proc/sys/fs/file-max

and edit /etc/sysctl.conf to include the line:

fs.file-max = 2048

2. Set the value for maximum number of open files In the file /etc/security/limits.conf, below the commented line that reads

#<domain>      <type>  <item>         <value>

add this line:

* – nofile 2048

This line sets the default number of open file descriptors for every user on the system to 2048. Note that the “nofile” item has two possible limit values under the <type> header: hard and soft. Both types of limits must be set before the change in the maximum number of open files will take effect. By using the “-” character, both hard and soft limits are set simultaneously.

The hard limit represents the maximum value a soft limit may have and the soft limit represents the limit being actively enforced on the system at that time. Hard limits can be lowered by normal users, but not raised and soft limits cannot be set higher than hard limits. Only root may raise hard limits.

When increasing file limit descriptors, you may want to simply double the value. For example, if you need to increase the default value of 1024, increase the value to 2048 first. If you need to increase it again, try 4096, etc.

==================================================================
1。ulimit -a 查看系统目前资源限制的设定。
[root@test security]# ulimit -a
core file size        (blocks, -c) 0
data seg size         (kbytes, -d) unlimited
file size             (blocks, -f) unlimited
max locked memory     (kbytes, -l) unlimited
max memory size       (kbytes, -m) unlimited
open files                    (-n) 1024
pipe size          (512 bytes, -p) 8
stack size            (kbytes, -s) 8192
cpu time             (seconds, -t) unlimited
max user processes            (-u) 7168
virtual memory        (kbytes, -v) unlimited
[root@test security]#
通过以上命令,我们可以看到open files 的最大数为1024
那么我们可以通过一下命令修改该参数的最大值
2. ulimit -n 4096
[root@test security]# ulimit -n 4096
[root@test security]# ulimit -a
core file size        (blocks, -c) 0
data seg size         (kbytes, -d) unlimited
file size             (blocks, -f) unlimited
max locked memory     (kbytes, -l) unlimited
max memory size       (kbytes, -m) unlimited
open files                    (-n) 4096
pipe size          (512 bytes, -p) 8
stack size            (kbytes, -s) 8192
cpu time             (seconds, -t) unlimited
max user processes            (-u) 7168
virtual memory        (kbytes, -v) unlimited

这样我们就修改了系统在同一时间打开文件资源的最大数,基本解决以上问题。

另外我们可以通过lsof  -p [进程的 pid]来查看系统当前打开的文件资源,可以了解不同时期系统的文件资源的使用情况,可根据情况进行系统资源的配置。

Tags: ,

星期四, 3月 11th, 2010 服务器 没有评论

在linux下如何查看和踢除正在登陆的其它用户

使用who这个命令来查看当前正在登录的用户

[root@localhost http]# who
root     tty1         Apr  9 13:17
http     pts/0        Apr 16 15:13 (192.168.8.235)
http     pts/1        Apr 16 15:13 (192.168.8.235)

上面的消息告诉我们:tty是指在任何一个虚拟控制台登录则产生一个tty,比如你插上显示器登录主机,就会增加一个tty,那pts是什么呢?pts是每一个远程连接都会产生的

要踢出某个用户以及该用户运行的程序(很野蛮),请采用如下方法:

比如:想踢除http这个用户和他的所有开启的程序执行下面命令

pkill -u http

注意:这个命令实际上很危险,要相当小心的执行!!

说他危险的原因是:该用户所有有关的程序都会被关掉,那意味着什么呢?那意味着:如何你使用http这个用户开启的apache服务的 话,apache服务业停掉了,你必须手动开启apache服务!说得更严重点:如果你不小心执行了踢出root的命令,那意味着使用root开启的 ssh服务也停止了,你必须(是的!是必须!)接显示器到服务器上了,或者你必须按一下reset键了~~

那么安全的方法是什么呢?

安全的做法是先查看终端号,然后查看该终端执行的所有进程,根据进程号来停止服务!

示例:

[root@localhost http]# who
root     tty1         Apr  9 13:17
http     pts/0        Apr 16 15:13 (192.168.8.235)
[root@localhost http]# ps -ef|grep pts/0
http     16627 16595  0 15:13 ?        00:00:00 sshd: http@pts/0
http     16628 16627  0 15:13 pts/0    00:00:00 -bash
root     16680 16628  0 15:13 pts/0    00:00:00 su
root     16681 16680  0 15:13 pts/0    00:00:00 bash
root     18089 16681  0 15:41 pts/0    00:00:00 ps -ef
root     18090 16681  0 15:41 pts/0    00:00:00 grep pts/0

如果你要终止某个进程,看准进程号,执行。比如要敲掉http的bash,看准进程号是16628

Tags: ,

星期四, 3月 11th, 2010 服务器 没有评论

Apache缓存系统

Apache 从2.0开始就已经可以使用缓存模块了,不过在2.0的时候还是实验性的,到了2.2已经完全可以放心的使用。Apache 的缓存实现主要依靠 mod_cache、mod_disk_cache、mod_file_cache 及 mod_mem_cache。只需在配置编译的时候加上参数:–enable-cache、 –enable-disk-cache、–enable-file-cache、 –enable-mem-cache 即可。
关于 Apache 的编译安装本文就不再说了,可以参考以前的文章。这里主要介绍一下如何配置使用 Apache 的缓存功能。
具体来说,Apache 的缓存方式有两种,一种是基于硬盘文件的缓存,由 mod_disk_cache 实现,另一种是使用内存缓存,由 mod_mem_cache 实现,不过它们都是依赖 mod_cache 模块的,mod_cache 模块提供了一些缓存配置的指令供它们使用,而 mod_file_cache 模块是搭配 mod_mem_cache 模块使用的,下面分别进行介绍。
1、基于硬盘文件的缓存
基于硬盘文件存储的缓存由 mod_disk_cache 模块实现,先看个简单的配置例子:

CacheDefaultExpire 86400

CacheEnable disk /
CacheRoot /tmp/apacheCache
CacheDirLevels 5
CacheDirLength 5
CacheMaxFileSize 1048576
CacheMinFileSize 10

把上面的配置加到 Apache 的 httpd.conf 文件中,如果缓存相关的模块都已经编译进了 Apache 的核心,则无需加载模块,直接就能使用上面的指令。指令的详细说明如下:
CacheDefaultExpire: 设定缓存过期的时间(秒),默认是1小时,只有当缓存的文档没有设置过期时间或最后修改时间时这个指令才会生效
CacheEnable:启用缓存,第1个参数是缓存类弄,这里当然是 disk了,第2个参数是缓存路径,指的是 url 路径,这里是缓存所有的东西,直接写上“/”即可,如“/docs”则只缓存 /docs 下的所有文件
CacheRoot:缓存文件所在的目录,运行 Apache 的用户(如daemon 或 nobody)要能对其进行读写,如果不清楚的话可以直接设置成 777,请手动建立该目录并设置好访问权限
CacheDirLevels:缓存目录的深度,默认是3,这里设置为5
CacheDirLength:缓存目录名的字符长度,默认是4,这里设置为5
CacheMaxFileSize 和 CacheMaxFileSize:缓存文件的最大值和最小值(byte),当超过这个范围时将不再缓存,这里设置为 1M 和 10bytes
基于硬盘文件存储的文件基本上就这些内容,设置好后重启 Apache 应该就能使用了。一切正常的话,可以在缓存目录下看到 Apache 自动建立的一些目录和缓存的数据文件。
2、基于内存的缓存
基于内存的缓存主要由 mod_mem_cache 模块实现,还是看个简单的配置吧,这样比较直观:-)

CacheEnable mem /
MCacheMaxObjectCount 20000
MCacheMaxObjectSize 1048576
MCacheMaxStreamingBuffer 65536
MCacheMinObjectSize 10
MCacheRemovalAlgorithm GDSF
MCacheSize 131072

简单说一下上面一些指令的意思:
CacheEnable:启用缓存,使用基于内存的方式存储
MCacheMaxObjectCount:在内存中最多能存储缓存对象的个数,默认是1009,这里设置为20000
MCacheMaxObjectSize:单个缓存对象最大为 1M,默认是10000bytes
MCacheMaxStreamingBuffer:在缓冲区最多能够放置多少的将要被缓存对象的尺寸,这里设置为 65536,该值通常小于100000或 MCacheMaxObjectSize 设置的值
MCacheMinObjectSize:单个缓存对象最小为10bytes,默认为1bytes
MCacheRemovalAlgorithm:清除缓存所使用的算法,默认是 GDSF,还有一个是LRU,可以查一下 Apache 的官方文档,上面有些介绍
MCacheSize:缓存数据最多能使用的内存,单位是 kb,默认是100kb,这里设置为128M
保存重启 Apache 基于内存的缓存系统应该就能生效了,根据需要可以使基于内存的存储或硬盘文件的存储方式一起使用,只要指明不同的URL路径即可。
3、注意事项
使用缓存需要注意如下事项:
要使用缓存,必须使用指令 CacheEnable 启用它,目前可用的缓存类型为 disk 或 mem,禁止缓存可以使用 CacheDisable,如 CacheDisable /private
待缓存的 URL 返回的状态值必须为: 200、203、300、301 或 410
URL 的请求方式必须是 GET 方式
发送请求时,头部中包含 “Authorization: ”的字符串时,返回的内容将不会被缓存
URL 包含查询字符串,如问号?后的那些东西,除非返回的内容包含“Expires:”,否则不会被缓存
如果返回的状态值是 200,则返回的头部信息必须包含以下的一种才会被缓存:Etag、Last-Modified、Expires,除非设置了指令 CacheIgnoreNoLastMod On
如果返回内容的头部信息“Cache-Control:”中包含“private”,除非设置了指令 CacheStorePrivate On,否则不会被缓存
如果返回内容的头部信息“Cache-Control:”中包含“no-sotre”,除非设置了指令 CacheStoreNoStore On,否则不会被缓存
如果返回内容的头部信息“Vary:”中包含了“*”,不会被缓存
4、其它一些指令的介绍
如果你的网站有几个文件的访问非常频繁而又不经常变动,则可以在 Apache 启动的时候就把它们的内容缓存到内存中(当然要启用内存缓存系统),使用的是 mod_file_cache 模块,具体如下:
有多个文件可以用空格格开
MMapFile /var/www/html/index.html /var/www/html/articles/index.html
上面是缓存文件的内容到内存中,除此之外,还可以只缓存文件的打开句柄到内存中,当有请求进来的时候,Apache 直接从内存中获取文件的句柄,返回内容,和 MMapFile 指令很像,具体如下:
CacheFile /var/www/html/index.html /var/www/html/articles/index.html
上面两个指令所缓存的文件如果有修改的话,必须重启 Apache 或使用 graceful 之类的方式强制使 Apache 更新缓存数据,否则当用户访问的时候获取的不是最新的数据。
有时候需要根据某些特殊的头部信息来决定是否进行缓存,则可以使用如下指令:
当头部信息中包含 Set-Cookie 时则跳过不进行缓存操作
CacheIgnoreHeaders Set-Cookie
有时候需要缓存的时候跳过 URL 中的查询字符串?使用如下指令:
CacheIgnoreQueryString On
Apache 的缓存系统不仅可以缓存服务器本身的文件,也可以缓存通过代理得到的内容,对了,Apache 可以像 Squid 一样做代理,而且做的还不错,下篇文章就介绍一下 Apache 的代理功能吧。善用 Apache 的缓存功能,可以让你的网站速度提升不少。做为一个网站来说,虽然可用的各种缓存方案很多,但在 Web 服务器层做缓存的效率还是很值得一试的。

嗯 不过常用功能 nginx都有了 而且nginx效率更高
?nginx配合tomcat、resin等java应用服务器提供java支持
首先探讨一下为什么要使用nginx:

1、类似于apache+resin,nginx用于提供静态页面服务,比java服务器要强。虽然这些java服务器的性能都不赖,tomcat新版甚至还支持了epoll,但是用nginx来处理静态文件是一定比这些服务器更稳妥并更快速的。

2、nginx在配合java应用服务器时相比apache耦合度更低,所以它可以用相同的方式连上所有能支持http服务能力的java应用服 务器,无论是tomcat、resin、weblogic、jetty、websphere……,并且可以轻易地将一个应用同时连接不相同的服务器。譬如 一台跑tomcat,一台跑resin,这一点在切换或测试生产环境时非常有用。另外耦合度的降低,将使nginx和这些服务器之间的相互影响降到最低, 这样两者就能各尽其责,apache一般是采用一个模块来和java应用服务器打交道,这个模块是会对apache的运行或多或少产生影响的,nginx 告诉我们这些模块是多么的鸡肋,java服务器要不就往fastcgi协议支持方面发展会更好。

3、nginx的一些特性可以保住脆弱的java服务器。其中可以点名的:1是可细致定制的负载均衡策略;2是超强的故障屏蔽功能可以做到不遗漏任何一个请求;3是客户端连接的异步处理;4是比java服务器强上百倍的负荷能力。

综合这些优点,一般的java应用服务器,接上一个nginx后,在服务稳定性上将可匹敌数万美金的大型java集群服务器,java开发者就不用再为java性能方面发愁了。

Tags: , ,

星期四, 3月 11th, 2010 服务器 没有评论

使用sed命令删除空格和空行

sed s/[[:space:]]//g  filename          删除空格
sed /^$/d         filename        删除空行

Tags: , ,

星期四, 3月 11th, 2010 服务器 没有评论

脚本中date的用法

man date可以看到date的help文件
#date 获取当前时间
#date -d “-1 week” +%Y%m%d 获取上周日期(day,month,year,hour)
#date –date=”-24 hour” +%Y%m%d 同上
date_now=`date +%s` shell脚本里面赋给变量值

%% 输出%符号
%a 当前域的星期缩写 (Sun..Sat)
%A 当前域的星期全写 (Sunday..Saturday)
%b 当前域的月份缩写(Jan..Dec)
%B 当前域的月份全称 (January..December)
%c 当前域的默认时间格式 (Sat Nov 04 12:02:33 EST 1989)
%C n百年 [00-99]
%d 两位的天 (01..31)
%D 短时间格式 (mm/dd/yy)
%e 短格式天 ( 1..31)
%F 文件时间格式 same as %Y-%m-%d
%h same as %b
%H 24小时制的小时 (00..23)
%I 12小时制的小时 (01..12)
%j 一年中的第几天 (001..366)
%k 短格式24小时制的小时 ( 0..23)
%l 短格式12小时制的小时 ( 1..12)
%m 双位月份 (01..12)
%M 双位分钟 (00..59)
%n 换行
%N 十亿分之一秒(000000000..999999999)
%p 大写的当前域的上下午指示 (blank in many locales)
%P 小写的当前域的上下午指示 (blank in many locales)
%r 12小时制的时间表示(时:分:秒,双位) time, 12-hour (hh:mm:ss [AP]M)
%R 24小时制的时间表示 (时:分,双位)time, 24-hour (hh:mm)
%s 自基础时间 1970-01-01 00:00:00 到当前时刻的秒数(a GNU extension)
%S 双位秒 second (00..60);
%t 横向制表位(tab)
%T 24小时制时间表示(hh:mm:ss)
%u 数字表示的星期(从星期一开始 1-7)
%U 一年中的第几周星期天为开始 (00..53)
%V 一年中的第几周星期一为开始 (01..53)
%w 一周中的第几天 星期天为开始 (0..6)
%W 一年中的第几周星期一为开始 (00..53)
%x 本地日期格式 (mm/dd/yy)
%X 本地时间格式 (%H:%M:%S)
%y 两位的年(00..99)
%Y 年 (1970…)

例子:编写shell脚本计算离自己生日还有多少天?
read -p “Input your birthday(YYYYmmdd):” date1
m=`date –date=”$date1″ +%m`    #得到生日的月
d=`date –date=”$date1″ +%d`    #得到生日的日
date_now=`date +%s`      #得到当前时间的秒值
y=`date +%Y`            #得到当前时间的年
birth=`date –date=”$y$m$d” +%s`      #得到今年的生日日期的秒值
internal=$(($birth-$date_now))       #计算今日到生日日期的间隔时间
if [ “$internal” -lt “0” ]; then           #判断今天的生日是否已过
birth=`date –date=”$(($y+1))$m$d” +%s`      #得到明天的生日日期秒值
internal=$(($birth-$date_now))        #计算今天到下一个生日的间隔时间
fi
echo “There is :$((einternal/60/60/24)) days.”       #输出结果,秒换算为天

Tags: , ,

星期四, 3月 11th, 2010 服务器 没有评论

linux登录时,/etc/profile、~/.bash_profile等文件的执行过程

在登录Linux时要执行文件的过程如下:

在刚登录Linux时,首先启动 /etc/profile 文件,然后再启动用户目录下的 ~/.bash_profile、 ~/.bash_login或 ~/.profile文件中的其中一个,执行的顺序为:~/.bash_profile、 ~/.bash_login、 ~/.profile。如果 ~/.bash_profile文件存在的话,一般还会执行 ~/.bashrc文件。因为在 ~/.bash_profile文件中一般会有下面的代码:

if [ -f ~/.bashrc ] ; then

. ./bashrc

fi

~/.bashrc中,一般还会有以下代码:

if [ -f /etc/bashrc ] ; then

. /bashrc

fi

所以,~/.bashrc会调用 /etc/bashrc文件。最后,在退出shell时,还会执行 ~/.bash_logout文件。

执行顺序为:/etc/profile -> (~/.bash_profile | ~/.bash_login | ~/.profile) -> ~/.bashrc ->          /etc/bashrc -> ~/.bash_logout

关于各个文件的作用域

(1)/etc/profile: 此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行. 并从/etc/profile.d目录的配置文件中搜集shell的设置。

(2)/etc/bashrc: 为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取。

(3)~/.bash_profile: 每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件。

(4)~/.bashrc: 该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取。

(5)~/.bash_logout:当每次退出系统(退出bash shell)时,执行该文件. 另外,/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承/etc /profile中的变量,他们是”父子”关系。

(6)~/.bash_profile 是交互式、login 方式进入 bash 运行的~/.bashrc 是交互式 non-login 方式进入 bash 运行的通常二者设置大致相同,所以通常前者会调用后者。

Tags: ,

星期四, 3月 11th, 2010 服务器 没有评论

HTTP codes

This is examples of current HTTP codes

#[Miscellaneous successes]
“2xx”, “[Miscellaneous successes]”,
“200”, “OK”, # HTTP request OK
“201”, “Created”,
“202”, “Request recorded, will be executed later”,
“203”, “Non-authoritative information”,
“204”, “Request executed”,
“205”, “Reset document”,
“206”, “Partial Content”,
#[Miscellaneous redirections]
“3xx”, “[Miscellaneous redirections]”,
“300”, “Multiple documents available”,
“301”, “Moved Permanently”,
“302”, “Found”,
“303”, “See other document”,
“304”, “Not Modified since last retrieval”, # HTTP request OK
“305”, “Use proxy”,
“306”, “Switch proxy”,
“307”, “Document moved temporarily”,
#[Miscellaneous client/user errors]
“4xx”, “[Miscellaneous client/user errors]”,
“400”, “Bad Request”,
“401”, “Unauthorized”,
“402”, “Payment required”,
“403”, “Forbidden”,
“404”, “Document Not Found”,
“405”, “Method not allowed”,
“406”, “ocument not acceptable to client”,
“407”, “Proxy authentication required”,
“408”, “Request Timeout”,
“409”, “Request conflicts with state of resource”,
“410”, “Document gone permanently”,
“411”, “Length required”,
“412”, “Precondition failed”,
“413”, “Request too long”,
“414”, “Requested filename too long”,
“415”, “Unsupported media type”,
“416”, “Requested range not valid”,
“417”, “Failed”,
#[Miscellaneous server errors]
“5xx”, “[Miscellaneous server errors]”,
“500”, “Internal server Error”,
“501”, “Not implemented”,
“502”, “Received bad response from real server”,
“503”, “Server busy”,
“504”, “Gateway timeout”,
“505”, “HTTP version not supported”,
“506”, “Redirection failed”,
#[Unknown]
“xxx” ,”[Unknown]”

Tags:

星期四, 3月 11th, 2010 网络 没有评论

N’java Music Video

Ok so, I’m sure that very little people know who N’java are. Well their a very famous group in Madagascar, Africa and two of the singers(Monika Rasoarnirina & Lala Raharimahala)sang almost all the …

Moving soulful voices of Njava carry you to another level during their Salmon Arm’s 16th Roots & Blues Festival performance.

Njava – Festival Músicas do mundo – Portugal 24.07.2009

http://www.myspace.com/njava

Tags:

星期四, 3月 11th, 2010 音乐 没有评论
Pages: Prev 1 2 3 ... 5 6 7 8 9 10 11 12 13 14 15
1LMooBmUE153Wnd3zDryWvDyXxQudbFxDr