CentOS 升级到 2.6 的内核后,总是出现:
CPU0: Temperature above threshold
CPU0: Running in modulated clock mode
 
确认没有超频,检查了 CPU 风扇,散热没有问题,CPU 的温度较之使用 2.4 内核的时候也没有升高。
可是,只要编译东西就会说 CPU 温度过高,CPU 占用率稍微高一些也会频繁出现上面的两行警告,让人好生心烦。
 
查询资料后得知是 2.6 内核的相应阀值过低造成了这种状况。
 
vi /etc/syslog.conf
注释掉 *.emerg 这一行
/etc/init.d/syslog restart
 
就不会出现 CPU 温度过高的警告了。

环境:ADSL 动态 IP ,内网用户通过 Linux 网关服务器 NAT 上网。
 
1. 先到 3322.org 免费注册一个动态的二级域名。
 
2. 网关服务器上
# vi /etc/ppp/ip-up
在最后加入:
/usr/local/network/setup.sh
lynx -mime_header -auth=USERNAME:PASSWORD "http://www.3322.org/dyndns/update?system=dyndns&hostname=HOST.3322.org"
 
第一个是执行 iptables 做 NAT 以及 TC 流量控制等脚本的集合。
第二个是在拨号成功时向 3322.org 提交新的 IP 地址。
 
3. 安装 Apache ,configure 的时候加上 --enable-proxy=shared
在虚拟主机配置中加上:
RewriteEngine on
RewriteRule ^/(.*)$ http://192.168.0.254/$1 [P,L]
 
注:如果有注册静态域名,做 CNAME 到 HOST.3322.org 就可以实现 IP 的自动“更新”了。
    可以配置多个虚拟主机为多部内网机器提供发布到外网的 Web 服务。

Linux 使用 RAMDisk 提高系统性能

2006-06-10 15:08  |  分类:操作系统

最初,使用 RAMDisk 是通过在 ram 设备上建立文件系统并挂载来实现的。
# mkdir /mnt/ramfs
然后把下面的指令加入 /etc/rc.local 。
/sbin/mkfs -t ext3 /dev/ram0
/bin/mount /dev/ram0 /mnt/ramfs
/bin/chmod -R 1777 /mnt/ramfs
RAMDisk 的默认大小是 8M (可以在编译内核时设定),如果要增加 RAMDisk 的大小,需要在系统启动时给内核传参数,在 grub.conf 的 kernel 行末加上 ramdisk_size=131072 ,这里不能是 128M 这样的写法,应该是 128*1024 。
 
使用 ram 设备的灵活性不够,不方便。之后就使用 shm 了。
以 /tmp 绑定到 shm 为例,可以把下面的指令加入 /etc/rc.local 。
mkdir /dev/shm/tmp
chmod 1777 /dev/shm/tmp
mount --bind /dev/shm/tmp /tmp
 
使用 shm 要稍微方便些了,不过还是不够,更方便的办法是通过 mount 使用 tmpfs 文件系统。
# mkdir /mnt/tmpfs
# mount -t tmpfs -o size=128m,mode=1777 tmpfs /mnt/tmpfs
这里的 128m 就是 128Mb 的意思。
卸载:# umount /mnt/tmpfs
可以添加相应的设置到 /etc/fstab 开机自动挂载。
Debian 系统在启动时会清空 /tmp 目录,让 /tmp 使用 tmpfs 再合适不过了,这样还可以提高系统性能。
编辑 /etc/fstab,加入或修改 /tmp 这行:
tmpfs           /tmp            tmpfs   size=128m,mode=1777     0          0
 
直接使用 tmpfs 应该是最方便的。把 squid 的 cache 目录放到 RAMDisk 里提高 proxy 效能,甚至把 MySQL 的数据库文件也放到 RAMDisk 以减少磁盘 I/O 。想怎么玩都比较方便了。
需要注意的是,RAMDisk 的大小最好不要超过内存的一半,如果过大,系统就会使用 swap 分区了,性能反倒会下降。
 
参考资料:LINUX系统性能调谐

VMware 的安装不是什么难事,基本上是回车即可。
可是在 Debian Sarge 上执行 /usr/bin/vmware-config.pl 生成 vmmon.ko 时却有意外状况发生,说是找不到内核头文件的 scripts 目录。
虽然已经安装过内核头文件,但是想到很久没有更新过内核了,干脆升级一下内核算了。
# apt-get update
# apt-get upgrade
# apt-cache search kernel-image | grep 2.6
安装相应 CPU 型号的最新内核:
# apt-get install kernel-image-2.6.8-3-686-smp
重启进入新内核的系统,确认没有问题后删除老内核:
# dpkg --purge --force-remove-essential kernel-image-2.6.8-2-686-smp
# apt-get remove --purge kernel-headers-2.6.8-2-686
或许 /boot 和 /lib/modules 下的一些残留文件需要另行删除。
再来安装与新内核相匹配的内核头文件:
# module-assistant prepare
再次运行 /usr/bin/vmware-config.pl ,却还是相同的问题。
到 /usr/src/kernel-headers-2.6.8-3-686-smp 目录下一看,发现 scripts 是个链接,是链接到
../kernel-kbuild-2.6-3/scripts 的,而 /usr/src/kernel-headers-2.6.8-3 下的 scripts 也是个链
接,居然同样链接到了 ../kernel-kbuild-2.6-3/scripts ,-_-! 这要不出错才怪了呢。
怀疑是 apt source 的问题,便把 cn99 的换成了 geekbone 的。apt-get clean 后重新安装,可是问题依旧。
询问使用 Debian testing 的用户,说 scripts 是个目录,里面有相应的脚本,看来是 Debian Sarge
的 bug 了。把 Debian testing 2.6.15 内核头文件的 scripts 目录拷贝过来覆盖掉 /usr/src/kernel
-headers-2.6.8-3/scripts 后再运行 /usr/bin/vmware-config.pl ,这次顺利的编译出了 vmmon.ko 。
就在本机使用 VMware 还需在本机安装 VMware-console ,一路回车就搞定。
对于远程使用 VMware ,值得注意的是 Server 和 Client 通信默认使用的是 902 端口,需要在防火墙中打开这个端口。
一个很有意义的设置是虚拟机可以随宿主系统自动启动/关闭:
VM -> Settings... -> Options -> Startup/Shutdown
选择随宿主系统自动启动/关闭。
启动虚拟主机时报错说 /tmp 空间不够,可以给 VMware 指定一个 tmp 目录:
# vi /etc/vmware/config
增加 tmpDirectory="/home/tmp" 。

PHP 连接 MSSQL

2006-06-02 16:48  |  分类:程序设计

1. Windows 下
把 php.ini 放到 C:\WINNT 下,
设置 extension_dir ,如:
extension_dir = "C:\php-4.3.11\extensions"
取消 mssql.dll 的注释:
extension=php_mssql.dll
 
Web Server 和 MS SQL SERVER 在同一部机器:
mssql_connect("HOST\INSTANCE","USER","PWD");
 
远程连接需要先在 Web Server 安装 MS SQL SERVER 客户端工具,然后才能连接:
mssql_connect("SERVER","USER","PWD");
 
2. UNIX/Linux 下
先安装 freetds-0.63
./configure --prefix=/usr/local/freetds
make
make install
 
安装 PHP 的时候:
--with-mssql=/usr/local/freetds
 
连接时需要加上端口号:
mssql_connect("IP:1433","USER","PWD");

页码: 上一页 1 2 3 ...5 6 7 8 9 10 11 12 13 下一页