1.我想要让Apache为许多的衔接供给服务。为了减小创立进程所需求的时刻,我把Apache子进程数量装备为固定的1000。体系的功能很差,有时乃至回绝衔接。你有什么主张吗?
回答:看来你很或许遇到了一个一般称为“thundering herd”(与众不同地集合)的问题。Apache和Linux的文档都具体地阐明晰这个问题,你可以用几种办法来处理它。
在Linux中,这种景象一般从进程“wake”(唤醒)开展而来。当一个新抵达的衔接要求Apache/Linux供给服务时,体系向一切正在休眠的进程发出通知。这时,一切这些进程会企图取得对新衔接的控制权。可是,它们之中只需一个可以取得成功,一切其他进程都将失利并转入休眠状况。这被称为“wake all”(悉数唤醒)。Linux 2.2和更早的内核都依照这种办法进行处理。
当正在休眠的Apache进程比较少时,它不会成为问题。一般,Apache会运用httpd.conf中的MinSpareServers和MaxSpareServers装备变量调整休眠进程的数量。但是,假如MaxSpareServer值高得与众不同,那么它或许导致功能问题。我一般把MaxSpareServer值设置为MaxClients值的百分之五到十之间。
假如你的MaxSpareServers值高得与众不同,只需减小这个值就可以当即进步功能。
一些内核不会遇到这个问题,因为它们具有一种运用“wake one”(唤醒一个)的才能,“wake one”答应为每个衔接恳求唤醒一个进程。BSD具有这个才能,Linux 2.4内核也相同。
为了运用“wake one”才能,编译Apache的时分有必要指定一个特别的选项。假如为2.4内核装备Apache,在编译之前请依照下面的示例履行指令,它将改进具有“wake one”才能的内核的功能:
# CFLAGS=’-DSINGLE_LISTEN_UNSERIALIZED_ACCEPT’ ./configure
为给数量巨大的网络衔接供给服务,Apache供给了许多调整参数。Apache有一个固定的最大答应衔接数量约束,假如要把它设置成大于256,你有必要从头编译Apache。
别的,为了习惯大规模服务的要求,Linux也需求进行一些文件体系方面的调整。你还要检查一下Linux经过编译办法固定的进程、体系级、用户级约束。
简而言之,当你为了巨大的Apache进程/衔接数量而进行调整时,有许多的要素有必要考虑。“thundering herd”也许是被忽视最多的问题,但其它需求考虑的要素还有许多。
欲知更多为了进步衔接数量而调整Apache的信息,请拜访http://linuxperf.nl.linux.org/webserving。
2.我得到了一个服务器上的帐号。因为管理员引荐运用ssh,这个帐号被制止运用telnet和ftp。什么是ssh?怎么运用?他们为什么要禁用telnet?
回答:ssh是“secure shell”的简称,它彻底可以代替telnet。ssh也有一个文件仿制指令,即scp(安全仿制),运用这个指令可以在不同的机器之间移动文件。
因为telnet和ftp的规划不是很安全,许多管理员禁用了telnet和ftp。用telnet和ftp协议登录服务器时,暗码以明文的办法发送给服务器,怀有歹意的人或许监听网络上传输的数据包,从而得到用户的登录信息。尽管产生这种工作的或许性不大,但假如运用象ssh之类的协议,咱们可以彻底避免这类工作产生。
在运用办法上,ssh和telnet很类似。但是,ssh不只加密登录姓名和暗码,并且加密整个传输进程。因而,ssh可以避免任何在你和服务器之间的第三者看到传输内容。
有一个广受欢迎的免费ssh完结,它归于OpenBSD体系,但也可以在Linux上运转。OpenSSh可以从http://ftp.openbsd.org/pub/OpenBSD/OpenSSH下载。假如你的体系以rpm包为根底,你可以在portable/rpm目录下找到rpm包。(直到最近,OpenSSH所用的加密算法之一还有专利约束。但现在状况现已有了改变。请拜见http://www.rsasecurity.com/developers/total-solution)。
装置好ssh之后,咱们可以很方便地在长途服务器上运用ssh取得一个shell。例如,假定我履行:
# ssh dtype@trove.sourceforge.net
首要我看到体系提示输入暗码,输入后我就在长途机器上取得了一个shell。从这儿开端,ssh的会话进程和telnet会话类似。不同之处在于,我可以坚信一切在我和服务器之间传输的数据都现已经过加密。
假如你很熟悉rsh和它的选项,那么你很快就可以开端运用ssh。ssh被规划成和rsh具有相同的运作办法。一般状况下,可以用rsh作为传输端口的程序都答应用ssh来代替(例如rsync)。
安全仿制指令scp的用法也很简单,它的语法和cp的语法很类似。例如,要把index.php文件仿制到dtype.org服务器,则咱们运用如下指令:
# scp index.php dtype@dtype.org:/usr/local/apache/htdocs/
此刻,咱们将看到暗码输入提示(正如ssh)。接下来,本地机器当时目录下的index.php文件被仿制到dtype.org的/usr/local/apache/htdocs/,运用的登录姓名是dtype。
要了解有关OpenSSh的更多信息,请拜见http://www.openssh.com,从这儿你可以找到有关安全协议的具体阐明。
3.我有一台便携计算机。我想要确保便携机和台式机上都有最新的数据文件。你有何主张?
回答:有一个优异的东西rsync可以完结这个使命。rsync供给了一种坚持两组文件相同的办法。它以Andrew Tridgell(SAMBA项目的创始人)规划的算法为根底。Andrew Tridgell的算法答应只传输对文件的改动。
rsync一般被看成是一个规范的体系东西,因而你的体系上很或许现已装置了rsync。假如它还没有装置,那么你的Linux装置盘上应该有它的包文件,或许你也可以从http://rsync.samba.org下载最新的源代码。在指令行直接输入rsync将提示用法阐明,你可以用这种办法测验rsync是否现已装置。
要坚持文件同步,一切机器(在本例中,这是指你的便携计算机和台式机)都有必要装置rsync。别的,这两台机器应该可以经过网络相互看到对方。
我强烈主张用ssh作为两台机器之间的通讯机制。但还有其他几种装备rsync传输器的办法,包含rsh和rsync daemon形式,rsync文档对此有具体阐明。请拜见本文有关ssh的阐明晰解更多信息。
rsync指令的语法和cp指令很类似。从本质上看,你是在把文件从一个方位仿制到另一个方位,但rsync多了几个cp指令没有的选项。和一般的文件仿制比较,文件同步最大的不同之处是你有必要指定一台非本地的机器(比方你的台式机)。