补充:原因查明了,对于httpd2.4,使用Include包含了extra中的httpd-mpms.conf配置文件,PidFile属于Mpm模块中的指令。对于pidfile的设置如果在最下面取消注释了包含httpd-mpm.conf文件的那个Include指令,就必须到httpd-mpm.conf中修改PidFile指令的值,否则在主配置文件中没用,会被httpd-mpm.conf中的PidFile覆盖掉。如果是使用httpd2.2版本的软件的话,也无非就是PidFile指令的生效问题,大家好好查查。
我做了这么多年幼师,一直在想幼儿园的小孩是否全部都是天真快乐呢?是否全部都能友好相处呢?这些问题一直萦绕在我的心中,直到我读了《幼儿园里的“问题小孩”》,我这个疑惑的云朵才被拨开。对于《幼儿园里的“问题小孩”》这一本书的总体评价,我认为这是一本基于作者理论学养于实践经验的原创之作,站在一个幼师的角度,我认为要以身作则,去在现实中发现书中存在的“问题”小孩,学会更多的专业知识去辅导孩子的心理,引导他们积极向上,懂得生活的美好。
在书中,论述围绕幼儿园课程的课程价值,分析了幼儿园教学内容有别于其他阶段的特质,从课程与教学的视角,澄清了长期以来幼儿园教育设计中诸多群体性、无意识的错误做法。语言浅白通俗又不失学理思考,虽脱胎于日常的授课讲义,又从读者的阅读心理出发设计了灵动的阅读结构,为职前、职后的幼儿园教师提供了有价值的学习与指导。
书中描述的一个很典型的现象就是幼儿的“隐蔽性”说谎,是指幼儿在特定环境下因为某种原因而隐蔽地说谎,这对刚处在萌芽阶段的幼儿有很不利的影响。由于幼儿“心灵的纯洁”,他们在真实的伪装下说谎时,往往会显得很不自然,对他们心灵的摧残也是显而易见的,因此,教导幼儿学会真诚,多和幼儿熟悉,多听他们的心事,也是我读完这本书的一个很大的感悟。
书中描述的幼儿园中存在的问题小孩主要有下面这八个问题:磨蹭、倔强、叛逆、暴力、吹牛、撒谎、孤僻,这些都是一个人成长中起阻碍的消极面,书中主要描写了从行为规范、心理健康、培养个性、解决叛逆等问题入手,以幼儿园和家长的双角度去更好地描述这本书的主题思想,带给普世大众对幼儿园教育中的解决。其中,书中展现的“榜样模范”也是让我记忆尤深的,一个好的集体需要好的带领人,在幼儿中建立榜样模范,可以让幼儿培养良好的习惯,汲取优秀的品质从而培养真诚善良的性格,良好的学习升高习惯,有益于幼儿集体的发展。
总之,幼儿园里的孩子作为稚嫩的花朵,必然需要社会上人们的关怀,作为幼儿园老师和家长,我们要学会用爱去鼓励孩子,去呵护每一个娇嫩的花朵,使他们寻回自信和坚强,让他们能以更好的姿态去迎接生活中的困难,去呵护每一个幼儿园孩子,培养他们优良的品格,成为国家未来的中流砥柱.
在开发内核模块或驱动时,如果处理失误,导致内核线程中出现死锁或者死循环,你会发现,除了重启之外,你没有任何可以做的。这时你的输入不起任何作用,终端(不是指远程的ssh工具)只会在那重复的输出类似“BUG: soft lockup - CPU#0 stuck for 67s! [fclustertool:2043]”,更无奈的是你重启之后导致系统挂起的堆栈信息也看不到,你所能做的就是一遍遍的加调试信息,一遍遍的重启机器(这是我的经历,现在想想很傻)。这种情况你肯定不是第一个遇到的,所以内核肯定会提供处理这种情况的一些机制。但是如何来找到这些机制在哪个地方,或者说根据什么信息去google呢?最有用的就是这句话“BUG: soft lockup - CPU#0 stuck for 67s! [fclustertool:2043]”,因为这句话提供你的信息量很大。首先,这条信息可以输出,说明即使发生死锁或者死循环,还是有代码可以执行。第二,可以通过这个日志信息,找到对应的处理函数,这个函数所在的模块就是用来处理CPU被过度使用时用到的。所以通过这个事情,可以看到内核打印出的只言片语都有可能成为你解决问题的关键,一定要从重视这些信息,从中找出有用的东西。我经常看的内核版本是官方的2.6.32内核,这个版本中我找到的函数是softlockup_tick(),这个函数在时钟中断的处理函数run_local_timers()中调用。这个函数会首先检查watchdog线程是否被挂起,如果不是watchdog线程,会检查当前占有CPU的线程占有的时间是否超过系统配置的阈值,即softlockup_thresh。如果当前占有CPU的时间过长,则会在系统日志中输出我们上面看到的那条日志。接下来才是最关键的,就是输出模块信息、寄存器信息和堆栈信息,检查softlockup_panic的值是否为1。如果softlockup_panic为1,则调用panic()让内核挂起,输出OOPS信息。代码如下所示:/** This callback runs from the timer interrupt, and checks* whether the watchdog thread has hung or not:*/void softlockup_tick(void){int this_cpu = smp_processor_id()unsigned long touch_timestamp = per_cpu(touch_timestamp, this_cpu)unsigned long print_timestampstruct pt_regs *regs = get_irq_regs()unsigned long now/* Warn about unreasonable delays: */if (now <= (touch_timestamp + softlockup_thresh))returnper_cpu(print_timestamp, this_cpu) = touch_timestampspin_lock(&print_lock)printk(KERN_ERR BUG: soft lockup - CPU#%d stuck for %lus! [%s:%d]\n,this_cpu, now - touch_timestamp,current-comm, task_pid_nr(current))print_modules()print_irqtrace_events(current)if (regs)show_regs(regs)elsedump_stack()spin_unlock(&print_lock)if (softlockup_panic)panic(softlockup: hung tasks)}但是softlockup_panic的值默认竟然是0,所以在出现死锁或者死循环的时候,会一直只输出日志信息,而不会宕机,这个真是好坑啊!所以你得手动修改/proc/sys/kernel/softlockup_panic的值,让内核可以在死锁或者死循环的时候可以宕机。如果你的机器中安装了kdump,在重启之后,你会得到一份内核的core文件,这时从core文件中查找问题就方便很多了,而且再也不用手动重启机器了。如果你的内核是标准内核的话,可以通过修改/proc/sys/kernel/softlockup_thresh来修改超时的阈值,如果是CentOS内核的话,对应的文件是/proc/sys/kernel/watchdog_thresh。CentOS内核和标准内核还有一个地方不一样,就是处理CPU占用时间过长的函数,CentOS下是watchdog_timer_fn()函数。这里介绍下lockup的概念。lockup分为soft lockup和hard lockup。 soft lockup是指内核中有BUG导致在内核模式下一直循环的时间超过10s(根据实现和配置有所不同),而其他进程得不到运行的机会。hard softlockup是指内核已经挂起,可以通过watchdog这样的机制来获取详细信息。这两个概念比较类似。如果你想了解更多关于lockup的信息,可以参考这篇文档:注意上面说的这些,都是在内核线程中有效,对用户态的死循环没用。如果要监视用户态的死循环,或者内存不足等资源的情况,强烈推荐软件层面的watchdog。具体的 *** 作可以参考下面的文章,都写的非常好,非常实用:欢迎分享,转载请注明来源:内存溢出
评论列表(0条)