分页: 16/196 第一页 上页 11 12 13 14 15 16 17 18 19 20 下页 最后页 [ 显示模式: 摘要 | 列表 ]
Sep 14
EnableSendfile 指令
说明:使用操作系统内核的sendfile支持来将文件发送到客户端
语法:EnableSendfile On|Off
默认值:EnableSendfile On

这个指令控制httpd是否可以使用操作系统内核的sendfile支持来将文件发送到客户端。默认情况下,当处理一个请求并不需要访问文件内部的数据时(比如发送一个静态的文件内容),如果操作系统支持,Apache将使用sendfile将文件内容直接发送到客户端而并不读取文件。译者注:Linux2.4/2.6内核都支持。
这个sendfile机制避免了分开的读和写操作以及缓冲区分配,但是在一些平台或者一些文件系统上,最好禁止这个特性来避免一些问题:
一些平台可能会有编译系统检测不到的有缺陷的sendfile支持,特别是将在其他平台上使用交叉编译得到的二进制文件运行于当前对sendfile支持有缺陷的平台时。
在Linux上启用IPv6时,使用sendfile将会触发某些网卡上的TCP校验和卸载bug。
当Linux运行在Itanium处理器上的时候,sendfile可能无法处理大于2GB的文件。
对于一个通过网络挂载了NFS文件系统的DocumentRoot (比如:NFS或SMB),内核可能无法可靠的通过自己的缓冲区服务于网络文件。
如果出现以上情况,你应当禁用sendfile :
EnableSendfile Off
针对NFS或SMB,这个指令可以被针对目录的设置覆盖:
EnableSendfile Off

EnableMMAP 指令

说明:在递送中使用内存映射(memory-mapping)来读取文件
语法:EnableMMAP On|Off
默认值:EnableMMAP On

此指令指示httpd在递送中如果需要读取一个文件的内容,它是否可以使用内存映射。当处理一个需要访问文件中的数据的请求时,比如说当递送一个使用mod_include进行服务器端分析的文件时,如果操作系统支持,Apache将默认使用内存映射。
这种内存映射有时会带来性能的提高,但在某些情况下,您可能会需要禁用内存映射以避免一些操作系统的问题:
在一些多处理器的系统上,内存映射会减低一些httpd的性能。
在挂载了NFS的DocumentRoot上,若已经将一个文件进行了内存映射,则删除或截断这个文件会造成httpd因为分段故障而崩溃。
在可能遇到这些问题的服务器配置过程中,您应当使用下面的命令来禁用内存映射:
EnableMMAP Off
对于挂载了NFS的文件夹,可以单独指定禁用内存映射:
EnableMMAP Off
Jul 13
      今天碰到一个问题,NFS4.1的客户端在挂在服务器后,挂载目录下的文件及目录的uid和gid都变为4294967294,这应该是相当于-1的数。搜索了一下找到了几种解决的办法。

    解决方法:安装pnfs-nfs-utils,据说有很多依赖的包要装,没有尝试,有兴趣的可以去试试是否可行。


     网上有其他的解决办法:如

    You need to change the /etc/default/nfs-common file (on both your server and client):

      setNEED_IDMAPD to yes.

      sometimes set client is ok.

       不过在Cent OS 6.2的系统下没有找到这个文件,就不继续深究了。

     有一种最简单的解决办法就是在NFS的客户端启动rpcidmapd服务,然后你再看挂载的目录用户和组都是对的了,前提是你挂载的那个磁盘目录所属的用户和组,客户端也有。
Tags: ,
Jul 6
   之前用centos 6.2做系统的时候没有发现网卡会变成em1,可能不是在服务器上装的,而且今天特意拿来一台台式机安装centos 6.2 系统,网卡接口依然是之前的eth0,但是在DELL服务器上安装同样的centos 6.2系统,网卡的接口却变成了em1-em4了,其实本来这也没有什么,只是一个网卡接口的名称而已,一般来说没有什么影响。

   由于我们要使用LVS,环境配置完成后发现执行ipvsadm -ln,没有一台主机在线,连本机local都不在列表里
[root@localhost ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.9.9:80 wrr persistent 3600
于是立即去拿网卡接口是eth0-eth3的服务器做测试,发现配置之后一切正常,两台机器除了网卡接口名称不一样之外其他的都一样,就想去试试把centos 6.2 网卡是em1-em4的服务器网卡接口给改回去看看,至于这个是不是ipvsadm的bug还不确定,现在也没有时间去考证这些东西,以后再研究,谷歌了一下找到了一些资料,感兴趣的可以去看看: http://fedoraproject.org/wiki/Features/ConsistentNetworkDeviceNaming,下面就开始操作啦:

第一步:修改系统grub
vi /boot/grub/grub.conf
增加一个 biosdevname=0 的启动参数,我修改的结果如下:
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/sda2
#          initrd /initrd-[generic-]version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.32-220.17.1.el6.x86_64)
        root (hd0,0)
        kernel /vmlinuz-2.6.32-220.17.1.el6.x86_64 ro root=UUID=41d8fd59-98cb-44fa-9cfb-065c104feaf0 rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD quiet SYSFONT=latarc
yrheb-sun16 rhgb crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM biosdevname=0
        initrd /initramfs-2.6.32-220.17.1.el6.x86_64.img
title CentOS (2.6.32-220.el6.x86_64)
        root (hd0,0)
        kernel /vmlinuz-2.6.32-220.el6.x86_64 ro root=UUID=41d8fd59-98cb-44fa-9cfb-065c104feaf0 rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD quiet SYSFONT=latarcyrheb
-sun16 rhgb crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM biosdevname=0
        initrd /initramfs-2.6.32-220.el6.x86_64.img
添加的参数只有红色字体的那一段,然后保存文件

第二步:删除udev的配置文件rm -f /etc/udev/rules.d/70-persistent-net.rules

第三步:修改当前网卡配置文件的名称
mv ifcfg-em1 ifcfg-eth0
mv ifcfg-em2 ifcfg-eth1
mv ifcfg-em3 ifcfg-eth2
mv ifcfg-em4 ifcfg-eth3

第四步:修改网卡配置文件内容,把em1全部修改改为eth0
修改之前:
DEVICE="em1"
NM_CONTROLLED="yes"
ONBOOT=yes
HWADDR=D4:AE:52:6A:8F:76
TYPE=Ethernet
BOOTPROTO=none
IPADDR=114.X.X.X
GATEWAY=114.X.X.X
NETMAKS=255.255.255.224
DNS1=202.106.0.20
DNS2=8.8.8.8
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
修改之后:
DEVICE="eth0"
NM_CONTROLLED="yes"
ONBOOT=yes
HWADDR=D4:AE:52:6A:8F:76
TYPE=Ethernet
BOOTPROTO=none
IPADDR=114.X.X.X
GATEWAY=114.X.X.X
NETMAKS=255.255.255.224
DNS1=202.106.0.20
DNS2=8.8.8.8
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
可以使用 perl -p -i -e 's/em1/eth0/g' ifcfg-eth0 或sed -i 's/em1/eth0/g' ifcfg-eth0 进行替换。
最后一步:重新启动系统 init 6 启动之后你就发现熟悉的eth0-eth4已经回来啦,顺便说下centos 6.2 还有一个问题就是如果你没有在网卡配置文件里写dns的话,重启之后你就会发现 /etc/resolv.conf 文件被清空了,一个方法就是在网卡配置文件中写DNS,另一个方法就是给/etc/resolv.conf加i属性,chattr +i /etc/resolv.conf
Jul 5

RHEL/CentOS 6.x的系统服务比5.x系列的要多了很多新面孔,估计很多童鞋不甚理解,网上这方面资料也很少。理解这个对运维人员是必要的,因为开启不必要的服务越多,系统就相对越不安全。不需开启的服务尽量关闭。本人结合自己的应用经验做一些讲解说明,有不同理解的童鞋欢迎交流。

下面列表是在RHEL/CentOS 6.x最小化桌面环境安装下显示出来的系统服务,其中红色字体标注的是用官方的minimal ISO最小化安装系统后的服务列表。

服务名称功能    
 默认     
  
  建议     
备注说明
NetworkManager用于自动连接网络,常用在Laptop上开启关闭对服务器无用
abrt-ccpp 开启自定对服务器无用
abrt-oops 开启自定对服务器无用
abrtd 开启自定对服务器无用
acpid电源的开关等检测管理,常用在Laptop上开启自定对服务器无用
atd在指定时间执行命令开启关闭如果用crond,则可关闭它
auditd审核守护进程开启开启如果用selinux,需要开启它
autofs文件系统自动加载和卸载开启自定只在需要时开启它,可以关闭
avahi-daemon本地网络服务查找开启关闭对服务器无用
bluetooth蓝牙无线通讯开启关闭对服务器无用
certmonger 关闭关闭 
cpuspeed调节cpu速度用来省电,常用在Laptop上开启关闭对服务器无用
crond计划任务管理开启开启常用,开启
cups通用unix打印服务开启关闭对服务器无用
dnsmasqdns cache关闭关闭DNS缓存服务,无用
firstboot系统安装后初始设定关闭关闭 
haldaemon硬件信息收集服务开启开启 
ip6tablesipv6防火墙开启关闭用到ipv6网络的就用,一般关闭
iptablesipv4防火墙开启开启ipv4防火墙服务
irqbalancecpu负载均衡开启自定多核cup需要
kdump硬件变动检测关闭关闭服务器无用
lvm2-monitorlvm监视开启自定如果使用LVM逻辑卷管理就开启
matahari-broker 关闭关闭此服务不清楚,我关闭
matahari-host 关闭关闭此服务不清楚,我关闭
matahari-network 关闭关闭此服务不清楚,我关闭
matahari-service 关闭关闭此服务不清楚,我关闭
matahari-sysconfig
关闭关闭此服务不清楚,我关闭
mdmonitor软raid监视开启自定 
messagebus负责在各个系统进程之间传递消息开启开启如停用,haldaemon启动会失败
netconsole 关闭关闭 
netfs系统启动时自动挂载网络文件系统开启关闭如果使用nfs服务,就开启
network系统启动时激活所有网络接口开启开启网络基础服务,必需!
nfs网络文件系统关闭关闭nfs文件服务,用到就开启
nfslocknfs相关开启关闭nfs相关服务,用到就开启
ntpd自动对时工具关闭自定网络对时服务,用到就开启
ntpdate自动对时工具关闭关闭 
oddjobd与D-BUS相关关闭关闭 
portreserveRPC 服务相关开启自定可以关闭
postfix替代sendmail的邮件服务器开启自定如果无邮件服务,可关闭
psacct负荷检测关闭关闭可以关闭
qpidd消息通信开启开启 
quota_nld 关闭关闭可以关闭
rdisc自动检测路由器关闭关闭 
restorecondselinux相关关闭关闭如果开启了selinux,就需开启
rpcbind 开启开启关键的基础服务,nfs服务和桌面环境都依赖此服务!相当于CentOS 5.x里面的portmap服务。
rpcgssdNFS相关开启关闭NFS相关服务,可选
rpcidmapdRPC name to UID/GID mapper开启关闭NFS相关服务,可选
rpcsvcgssdNFS相关关闭关闭NFS相关服务,可选
rsyslog提供系统的登录档案记录开启开启系统日志关键服务,必需!
saslauthdsasl认证服务相关关闭关闭 
smartd硬盘自动检测守护进程关闭关闭 
spice-vdagentd 开启开启 
sshdssh服务端,可提供安全的shell登录开启开启SSH远程登录服务,必需!
sssd 关闭关闭 
sysstat 开启开启一组系统监控工具的服务,常用
udev-post设备管理系统开启开启 
wdaemon 关闭关闭 
wpa_supplicant无线认证相关关闭关闭 
ypbindnetwork information service客户端关闭关闭 

系统服务管理工具:

chkconfig(所有linux发行版都有),用法很简单,如下:

chkconfig --list [name]          chkconfig --add           chkconfig --del           chkconfig [--level ]   

ntsysv(Redhat系发行版特有),直接运行选择服务是否自启动。

3、查看系统服务的相关说明:

在RHEL/CentOS下这些系统服务都是Shell脚本,我们可以使用rpm的命令参数来查看相应服务的说明。如想查看mysqld服务的说明:

rpm -qi $(rpm -qf /etc/init.d/mysqld) 

如图所示:

Tags: , , ,
Jul 5
  limits.conf 文件实际是 Linux PAM(插入式认证模块,Pluggable Authentication Modules)中 pam_limits.so 的配置文件,而且只针对于单个会话。

    limits.conf的格式如下:

username|@groupname type resource limit
username|@groupname:设置需要被限制的用户名,组名前面加@和用户名区别。也可以用通配符*来做所有用户的限制。

  type:有 soft,hard 和 -,soft 指的是当前系统生效的设置值。hard 表明系统中所能设定的最大值。soft 的限制不能比hard 限制高。用 - 就表明同时设置了 soft 和 hard 的值。

resource:

  core - 限制内核文件的大小

  date - 最大数据大小

  fsize - 最大文件大小

  memlock - 最大锁定内存地址空间

  nofile - 打开文件的最大数目

  rss - 最大持久设置大小

  stack - 最大栈大小

  cpu - 以分钟为单位的最多 CPU 时间

  noproc - 进程的最大数目

  as - 地址空间限制

  maxlogins - 此用户允许登录的最大数目

  要使 limits.conf 文件配置生效,必须要确保 pam_limits.so 文件被加入到启动文件中。查看 /etc/pam.d/login 文件中有:

  session required /lib/security/pam_limits.so

  按下面说的,可以用ulimit -n 32768设置最大描述符,不过只对当前会话有用,而且要root,这个不好办,或者修改/etc/security/limits.conf,但要重启

  另外,没查到linux究竟最大描述符有没有限制,其他几个限制要不要改

http://www.nsfocus.net/index.php?act=magazine&do=view&mid=134

      如何限制和监视用户

  PAM 大多数的LINUX都内建了PAM支持。PAM的一个功能是系统环境设置,例如设置某个用户允许使用的系统内存大小等。在Red Hat和Caldera这两个发行版本的 /etc/security/ 目录下包含了许多可配置文件。最有趣的当属 /etc/security/limits.conf 文件,它允许你定义用户或用户组规则,规则是“软(soft)”或“硬(hard)”,规则的内容(如CPU、内存、最大文件大小等)。例如:

*    hard    core    0

bob    soft    nproc    100

bob    hard    nproc    150

  第一行规则禁止所有人产生core文件,第二行规则(软)定义用户bob的最大进程数为100,第三行规则(硬)定义用户bob的最大进程数为150。可以超出软规则的限制(警告),但不能超过硬规则的限制。你可以想像得到,这些规则定义到所有用户的登录SHELL和FTP等服务时是很有帮助的。

Bash

  Bash内建了一个限制器"ulimit"。注意任何硬限制都不能设置得太高,因此如果你在/etc/profile或用户的 .bash_profile (用户不能编辑或删除这些文件)中定义了限制规则,你就能对用户的Bash shell实施限制。这对于缺少PAM支持的LINUX旧发行版本是很有用的。你还必须确保用户不能改变他们的登录shell。限制的设置与PAM相似。例如:

ulimit –Sc 0
ulimit –Su 100
ulimit –Hu 150

http://www.ringkee.com/jims/read_folder/books/LinuxHackingExposed

      Ulimit命令

    设置限制

    可以把命令加到profile文件里,也可以在/etc/security/limits.conf文件中定义限制。

命令参数:

  -a      显示所有限制
  -c      core文件大小的上限
  -d      进程数据段大小的上限
  -f      shell所能创建的文件大小的上限
  -m     驻留内存大小的上限
  -s      堆栈大小的上限
  -t      每秒可占用的CPU时间上限
  -p     管道大小
  -n     打开文件数的上限
  -u     进程数的上限
  -v     虚拟内存的上限

    除可用Ulimit命令设置外,也可以在/etc/security/limits.conf文件中定义限制。

domino type item value

  domino是以符号@开头的用户名或组名,*表示所有用户,type设置为hard or soft。item指定想限制的资源。如cpu,core nproc or maxlogins。value是相应的限制值。

http://tech.blogchina.com/123/2005-06-10/372941.html

Unix、Linux下常用监控和管理命令工具

    检查编写的程序打开的文件数。   

  sysctl:显示(或设置)系统内核参数   

  sysctl -a 显示所有内核参数  

  sysctl -w 参数名=参数值   

  例如:sysctl -w fs.file-max=10240 设置系统允许同时打开的最大文件数为10240。   

  内核参数fs.file-nr包括三个参数值,第一个参数表示系统中曾经同时打开过的文件数峰值,  
  第二个参数表示空闲(分配后已释放)的文件数,
  第三个参数表示可以打开的最大文件数,其值等于fs.file-max。  

  当前打开的文件数 = 第一个参数值 - 第二个参数值   

  例如:   

  fs.file-nr = 977 223 10240   

  当前打开的文件数 = 977 - 233 = 744   

  设置内核参数时务必小心,如果设置不当会导致系统异常,甚至当机。  

  ulimit:显示(或设置)用户可以使用的资源限制   

  ulimit -a 显示用户可以使用的资源限制   

  ulimit unlimited 不限制用户可以使用的资源,但本设置对可打开的最大文件数(max open files)   

  和可同时运行的最大进程数(max user processes)无效  

  ulimit -n <可以同时打开的文件数> 设置用户可以同时打开的最大文件数(max open files)

  例如:ulimit -n 8192   

  如果本参数设置过小,对于并发访问量大的网站,可能会出现too many open files的错误   

  ulimit -u <可以运行的最大并发进程数> 设置用户可以同时运行的最大进程数(max user processes)   

  例如:ulimit -u 1024 

http://www-128.ibm.com/developerworks/cn/linux/es-JavaVirtualMachinePerformance.html?ca=dwcn-newsletter-linux

IBM JVM for Linux on POWER 的性能调优技巧

用户限制设置

为了获得最佳性能,让运行 JVM 进程的用户拥有经过正确配置的用户设置是很重要的。这些参数可以设置成以下两种形式之一:

暂时地,适用于通过 ulimit 命令登录 shell 会话期间。

永久地,通过将一个相应的 ulimit 语句添加到由登录 shell 读取的文件之一(例如 ~/.profile),即特定于 shell 的用户资源文件;或者通过编辑 /etc/security/limits.conf。

建议设置成无限制(unlimited)的一些重要设置是:
数据段长度:ulimit –d unlimited
最大内存大小:ulimit –m unlimited
堆栈大小:ulimit –s unlimited
CPU 时间:ulimit –t unlimited
虚拟内存:ulimit –v unlimited

对于需要做许多套接字连接并使它们处于打开状态的 Java 应用程序而言,最好通过使用 ulimit –n,或者通过设置
/etc/security/limits.conf 中的 nofile 参数,为用户把文件描述符的数量设置得比默认值高一些。

提高 Oracle 用户的 shell 限制

/etc/security/limits.conf
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
/etc/pam.d/login
session required /lib/security/pam_limits.so
/etc/profile
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
分页: 16/196 第一页 上页 11 12 13 14 15 16 17 18 19 20 下页 最后页 [ 显示模式: 摘要 | 列表 ]