服务器 Gind.cn

服务器问题集锦,包括 Linux(Ubuntu, Centos,Debian等)和Windows Server服务器

如何在BASH脚本中指定时间范围内的TAIL&EGREP

这个话题大都是这么说的。 我负责运行Apache2的一些运行Ubuntu 12.04的Web服务器,我想设置APC。 现在我明白,当处理有错误或怪癖的PHP代码时,APC可能会遇到分段错误问题。 因此,清理是明智的,但从人力angular度来看,并不是真正实用的。 所以我已经编写了一个脚本来监视主Apache2 error.log并计算它看到的分段错误数。 我运行它作为每2分钟运行的cron作业。 如果遇到指定数量的分段故障,应自动重启Apache2,清除APC并重新运行。 这个脚本的种子想法来自这个页面的评论,但我真的很重视这个概念,使其更多的生产准备满足我的需求和口味。 我对这个脚本通常感到满意,但是感觉一个主要的改进是这个片段的核心逻辑: if [[ `tail -n ${TAIL_NUMLINES} "${APACHE_ERROR_LOG}" | egrep -c "${TEXT_TO_WATCH}"` -ge ${FAIL_COUNT} ]]; then 这基本上是核心逻辑,将日志文件拖尾到指定的行数,如果它看到指定数量的带有exit signal Segmentation fault的日志条目,则决定是时候做一些事情了。 在这种情况下,请logging事件,向某人发送有关事件的消息并重新启动Apache。 我希望这个逻辑能够及时考虑因素,因为错误可能很less。 所以有些情况下我的FAIL_COUNT简单地匹配,不pipe重新启动,因为主错误日志中没有新的条目,因为没有新的错误命中。 这将最终在服务器基本上重新启动每一个cron作业命中的情况下。 这太可怕了 因此,我现在的解决scheme是将FAIL_COUNT & TAIL_NUMLINES设置为足够低的数量,以匹配Apache2重新加载时创build的条目的标准计数。 但是我还是不喜欢那个。 所以,如果有的话,可以添加一个时间框架到我的tail / egrep逻辑。 此外,我想避免创build一个时间戳或日志行的位置提示被保存到一个文件,如果可能的话。 我希望这个脚本是独立的,而不是依靠cron作业。 完整的脚本,因为我现在拥有它。 #!/bin/bash LOCK_NAME="APACHE_LOGWATCHER" LOCK_DIR=/tmp/${LOCK_NAME}.lock PID_FILE=${LOCK_DIR}/${LOCK_NAME}.pid DATE=`date +%Y%m%d` TIME=`date +%H%M` # SUFFIX="-"${DATE}"-"${TIME}; SUFFIX="-"${DATE}; […]

如何构build一个Web服务器群集?

我是一名IT专业的学生,​​并被要求为多个网站构build一个Web服务器集群。 经过两周的search,阅读和testing,我来到这里寻求帮助。 我们需要的是一组web服务器,负载均衡和故障切换。 我现在正在运行testing设置: 2台食人鱼服务器在故障转移和负载平衡超过3个networking服务器(nginx / php5)。 我遇到的问题: 会话未同步。 我试图结合memcache,memcached和repcached,我没有使php保存memcache内的会话 没有关于通过3台(甚至更多)Web服务器同步数据的想法。 我已经设置DRBD它适用于2台服务器,但从来没有发现如何为4台服务器。 我曾经尝试过的: 尝试: 2个nginx服务器,每个3个Web服务器负载均衡,上行循环 问题: 2个主要服务器在高活动时负载很高 会话不同步,每个服务器交换机都需要一个新的login 如果其中一台服务器没有应答,则停止切换到下一台服务器 尝试: DRBD作为Web服务器之间的数据同步 问题: 无法在4台服务器上运行DRBD 为了解释我真正的问题是什么,我们要build立一个高可用性和快速的Web集群。 Web集群应该实时同步所有数据。 我不知道如何做到这一点! 在这个networking集群将运行大量的网站,这意味着它应该都是自动的,用户(网站)不会知道这是在多个服务器上,但会认为这是一个真正的强大的服务器。 谷歌或Facebook如何做到这一点? 我确实想过有一个单独的服务器,客户可以在其上编辑Web服务器,真正的服务器将不会被编辑,直到他们的网站推到Web群集。 这可以通过rsync完成,但这似乎不是一个好的解决scheme..会议可以在共享存储上,我想呢? 任何想法或解决scheme,欢迎!