apache系统故障排查方案及相关操作知识

1.查看系统开的apache服务在哪个端口监听,有几个apache在服务,它的初始pid是多少
 netstat -alop |grep LISTEN |grep  httpd

2.从配置文件中查看当前apache的pid文件的位置
vi  /usr/local/apache/conf/httpd.conf

#
# PidFile: The file in which the server should record its process
# identification number when it starts.
#
<IfModule !mpm_netware.c>
PidFile logs/httpd.pid
</IfModule>

3.查看pid的值
 cat httpd.pid

4.显示进程分类显示
 pstree
 pstree  -p  
-p  Show  PIDs. PIDs are shown as decimal numbers in parentheses after each process name
如果出现其它httpd,则证明有死进程,杀掉相应的进程
kill -9 pid
killall

5.有的时候,logs下的日志文件可能很大,应建议添加日志轮训
ErrorLog "|/usr/local/cronolog/src/cronolog /usr/local/szapache/logs/%Y/%m/%d/error_log"
CustomLog "|/usr/local/cronolog/src/cronolog /usr/local/szapache/logs/%Y/%m/%d/access.log" common

6.netstat的用法

netstat -alop
  -a, --all  Show both listening and non-listening sockets
  -l, --listening  Show only listening sockets.  (These are omitted by default.)
  -o, --timers   Include information related to networking timers.
  -p, --program   Show the PID and name of the program to which each socket belongs.
(不明白Timer这一列是什么意思,没看懂 off keepalive  timewait)

显示有什么端口在监听
[root@ealltest root]# netstat -tunl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:139             0.0.0.0:*               LISTEN      
tcp        0      0 0.0.0.0:1521            0.0.0.0:*               LISTEN      
tcp        0      0 0.0.0.0:21              0.0.0.0:*               LISTEN      
tcp        0      0 0.0.0.0:23              0.0.0.0:*               LISTEN      
udp        0      0 192.168.10.224:137      0.0.0.0:*                           
udp        0      0 0.0.0.0:137             0.0.0.0:*                           
udp        0      0 192.168.10.224:138      0.0.0.0:*                           
udp        0      0 0.0.0.0:138             0.0.0.0:*                           
udp        0      0 0.0.0.0:928             0.0.0.0:*

/proc/net/tcp -- TCP socket information
[root@ealltest root]# cat /proc/net/tcp

/proc/net/udp -- UDP socket information
[root@ealltest root]# cat /proc/net/udp

[root@database etc]# vi /etc/protocols  协议名字的详细解释protocol-numbers
[root@database etc]# vi /etc/services  服务和端口号的对应关系port-numbers

7.关于ajp12, ajp13
   配置workers.properties,此文件中指定Tomcat定义的处理JSP,Servlet的worker,默认的定义有两个,ajp12和ajp13,具体如下:worker.list=ajp12, ajp13。其中每个worker定义的所在的机器,运行端口号,所属类等信息。
   配置 uriworkermap.properties 文件:此文件是设置Tomcat环境的Context处理时,对workers的选择,这里可以设定那些context 用ajp12,另外一些由ajp13来处理。如:
# Mount the servlet context to the ajp12 worker
/servlet/*=ajp12
表示http://yourserver:8080/servlet/** 下面的一切请求都由worker ajp12来处理。
# Mount the examples context to the ajp13 worker
/examples/*=ajp13
表示http://yourserver:8080/examples/** 下面的一切请求都由worker ajp13来处理。

################  什么是ajp12  #######################
一些人的解答:
是个端口协议

apache 把 servlet 和 jsp的请求转发到j2ee服务器 
他是个协议,在jserv里边有具体的实现 
apache有个模块mod_.... 
他好像就是通过这个ajp12转发的请求

这是他的内部实现
############################   出现错误的信息   ##########################################
[17/01/2007 09:02:48:533] (ERROR) ajp12: Servlet Error: ClassNotFoundException: null
[17/01/2007 09:11:08:470] (ERROR) ajp12: Servlet Error: ClassNotFoundException: null
[17/01/2007 09:14:41:503] (EMERGENCY) ajp12: can not connect to host 127.0.0.1:11004
[17/01/2007 09:14:41:503] (EMERGENCY) ajp12: connection fail
[17/01/2007 09:14:41:503] (ERROR) an error returned handling request via protocol "ajpv12"
[17/01/2007 09:14:41:556] (EMERGENCY) ajp12: can not connect to host 127.0.0.1:11004
##########################################################################################

8.每个Tomcat worker是一个服务于web server、等待执行servlet的Tomcat实例。例如我们经常使用像Apache之类的web server转发sevlet请求给位于其后面的一个Tomcat进程(也就是前面所说的worker)

定义workers的方法就是在apache的conf目录下编写一个workers.properties文件,使其作为apache的插件来发挥作用。

ajp12类型的worker工作时使用基于TCP/IP socket的ajpv12协议转发请求给“进程外”Tomcat worker。
注意:在ajpv12协议中,针对每个请求都要一个连接建立、使用、关闭。其默认侦听端口为8007。

ajp13类型的worker工作时使用基于TCP/IP socket的ajpv13协议转发请求给“进程外”Tomcat worker。
* ajpv13具有更丰富的二进制协议,它使用将频繁使用的字符串编码为小整数的方式对请求数据进行压缩。
* ajpv13重用打开的socket并保留这些打开的socket以处理将来的请求。这在apache与Tomcat之间具有防火墙的网络环境下是必要的。
* ajpv13具有对SSL信息的处理能力,以致容器能够实现SSL的相关方法(如isSecure())。
注意:ajp13当前只能用于支持“进程外”协议的Tomcat 4.0.x, 4.1.x and 5。

9.监视以太网中流动的数据包
[root@ealltest etc]# tcpdump -i eth0 -nex -s 128

10.由端口号看文件位置
[root@eall root]# pstree -p
        |-oracle(9826)
        |-proftpd(22884)
        |-sshd(23627)---bash(23640)
然后,进入/proc/22884,查看cmdline文件或者要相关的输出看maps
[root@eall 22884]# cat maps
08048000-08092000 r-xp 00000000 08:06 147482     /usr/local/proftp/sbin/proftpd
08092000-0809d000 rw-p 00049000 08:06 147482     /usr/local/proftp/sbin/proftpd
0809d000-080d0000 rwxp 00000000 00:00 0
40000000-40016000 r-xp 00000000 08:02 63889      /lib/ld-2.2.4.so

#####################################################
###echo "Your-New-Kernel-Value" > /proc/your/file#### 
#####################################################
11.如何增加操作系统所使用的内存数量
/proc/sys/kernel/msgmax 
该文件指定了从一个进程发送到另一个进程的消息的最大长度。进程间的消息传递是在内核的内存中进行,不会交换到磁盘上,所以如果增加该值,则将增加操作系统所使用的内存数量。 
缺省设置:8192

12. 内核发生严重状况的设置
/proc/sys/kernel/panic 
该文件表示如果发生“内核严重错误(kernel panic)”,则内核在重新引导之前等待的时间(以秒为单位)。零(0)秒设置在发生内核严重错误时将禁止重新引导。 
缺省设置:0

13.网络接口
/proc/sys/net/core/netdev_max_backlog 
该文件指定了,在接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目。 
缺省设置:300

14.有关Linux proc 文件系统的文档位于: /usr/src/linux/Documentation/filesystems/proc.txt
所有 IPv4 和 IPv6 的参数都被记录在内核源代码文档中。请参阅文件 /usr/src/linux/Documentation/networking/ip-sysctl.txt

15.注意apache的CustomLog和ErrorLog文件增加日志轮循后,确保原来的被注释掉,apachectl configtest 检测的话不会报错,但apache会产生两个日志!!

16.jserv的jserv.log中的错
[27/02/2007 15:44:01:749 CST] Timeout for servlet sheall.sh_housesrc_search expired. Probable deadlock. Skipping destroy().

这个东西在源文件里有定义
/usr/local/app/ApacheJServ-1.1.2/src/java/org/apache/jserv/JServServletManager.java

17. ServerTokens 指令

说明: 配置服务器HTTP回应头
语法: ServerTokens Major|Minor|Minimal|ProductOnly|OS|Full
默认值: ServerTokens Full
上下文: 服务器配置
状态: 核心
模块: core

此指令控制了Server回送给客户端的回应头域是否包含关于服务器OS类型和编译进的模块描述信息。

ServerTokens Prod[uctOnly]
服务器会发送(比如说):Server:Apache
ServerTokens Major
服务器会发送(比如说):Server:Apache/2
ServerTokens Minor
服务器会发送(比如说):Server:Apache/2.0
ServerTokens Min[imal]
服务器会发送(比如说):Server:Apache/2.0.41
ServerTokens OS
服务器会发送(比如说):Server: Apache/2.0.41 (Unix)
ServerTokens Full (or not specified)
服务器会发送(比如说):Server: Apache/2.0.41 (Unix) PHP/4.2.2 MyMod/1.2
此设置将施用与整个服务器,而且不能在虚拟主机的管理层次上予以启用或禁用。

18 无法分配内存
[root@suncotjwtweb1 6]# grep memory error_log 
[Sat May 19 18:06:24 2007] [alert] (12)Cannot allocate memory: apr_thread_create: unable to create worker thread

19. Out of Memory

solaris
# PATH=/usr/local/bin:/usr/bin:/usr/sbin:/usr/ucb:/usr/ccs/bin
# export PATH
./configure   --prefix=/usr/local/apache2  --enable-shared=max

apache系统故障排查方案及相关操作知识的更多相关文章

  1. MySQL相关操作知识

    1.解决客户端联不上MySQL服务器的问题: GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '' WITH GRANT OPTION; ...

  2. github 相关操作知识

    新设备上使用github 1.要在本地创建一个ssh key ssh-keygen -t rsa -C "email address" 2.界面提示进入.ssh文件夹下,找到id_ ...

  3. zzw原创_oracle回收站相关操作知识

    1.查询回收站状态语句 select * from user_recyclebin order by droptime desc   2.还原回收站 FLASHBACK TABLE  << ...

  4. Git知识总览(四) git分支管理之rebase 以及 cherry-pick相关操作

    上篇博客聊了<Git知识总览(三) 分支的创建.删除.切换.合并以及冲突解决>,本篇博客我们主要来看一下 rebase 变基相关的操作.rebase 操作和 merge 操作最终都可以达到 ...

  5. 尚学linux课程---9、yum相关操作和知识

    尚学linux课程---9.yum相关操作和知识 一.总结 一句话总结: 如何使用比如163,阿里云给yum配置yum源:去官网,不要百度:直接去官网,有帮助文档的(比如centos的就在centos ...

  6. 【RAC】RAC相关基础知识

    [RAC]RAC相关基础知识 1.CRS简介    从Oracle 10G开始,oracle引进一套完整的集群管理解决方案—-Cluster-Ready Services,它包括集群连通性.消息和锁. ...

  7. .NET同步与异步之相关背景知识(六)

    在之前的五篇随笔中,已经介绍了.NET 类库中实现并行的常见方式及其基本用法,当然.这些基本用法远远不能覆盖所有,也只能作为一个引子出现在这里.以下是前五篇随笔的目录: .NET 同步与异步之封装成T ...

  8. Linux 系统故障排查和修复技巧

    Linux 系统故障排查和修复技巧 我发现Linux系统在启动过程中会出现一些故障,导致系统无法正常启动,我在这里写了几个应用单用户模式.GRUB命令操作.Linux救援模式的故障修复案例帮助大家了解 ...

  9. redmine在linux上的mysql性能优化方法与问题排查方案

    iredmine的linux服务器mysql性能优化方法与问题排查方案     问题定位:   客户端工具: 1. 浏览器inspect-tool的network timing工具分析   2. 浏览 ...

随机推荐

  1. 安卓权威编程指南-笔记(第24章 Looper Handler 和 HandlerThread)

    AsyncTask是执行后台线程的最简单方式,但它不适用于那些重复且长时间运行的任务. 1. Looper Android中,线程拥有一个消息队列(message queue),使用消息队列的线程叫做 ...

  2. 分布式系统一致性问题与Raft算法(上)

    最近在做MIT6.824的几个实验,真心觉得每一个做分布式相关开发的程序员都应该去刷一遍(裂墙推荐),肯定能够提高自己的技术认知水平,同时也非常感谢MIT能够把这么好的资源分享出来. 其中第二个实验, ...

  3. C++走向远洋——25(项目二,游戏类)

    */ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:game.cpp * 作者:常轩 * 微信公众号:Worldhe ...

  4. RTL8812AU双频无线网卡在ubuntu19和20上的驱动安装

    旧爱已去 疫情在家,突然邻居敲门说,我这网上不了,帮下忙呗兄弟:兄弟都叫了,哥就冒回险,口罩扎起,一顿xxxx,原来是路由器没插到wlan口,看他拉网线可怜,就把我台式机上无线网卡送给他了,这就是又送 ...

  5. 手把手教你如何用MSF进行后渗透测试!

    在对目标进行渗透测试的时候,通常情况下,我们首先获得的是一台web服务器的webshell或者反弹shell,如果权限比较低,则需要进行权限提升:后续需要对系统进行全面的分析,搞清楚系统的用途:如果目 ...

  6. Markdown 语法简要规则

    Markdown简介 Markdown 是一种轻量级的「标记语言」,它的优点很多,目前也被越来越多的写作爱好者,撰稿者广泛使用.看到这里请不要被「标记」.「语言」所迷惑,Markdown 的语法十分简 ...

  7. 一文快速入门Shell脚本_了解Sheel脚本基本命令

    通过代码和注释的形式,列举了shell的基础操作,快速入门.shell在线编辑器 注释 单行用#号:多行::<<' 多行注释... '.:<<a 多行注释... a.:< ...

  8. Tomcat8优化

    一.Tomcat8优化 Tomcat服务器在JavaEE项目中使用率非常高,所以在生产环境对Tomcat的优化也变得非常重要了. 对于Tomcat的优化,主要是从2个方面入手,一是,Tomcat自身的 ...

  9. python基本数据类型的操作

    1 列表和元组 1.列表基本操作 1. 列表赋值 a = [1,2,3,4,5,6,7,8] a[0] = 100 #the result : [100, 2, 3, 4, 5, 6, 7, 8] 2 ...

  10. springcloud项目实现自定义权限注解进行接口权限验证

    一般在项目开发中会根据登录人员的权限大小对接口也会设置权限,那么对接口权限是怎么实现的呢,大多数都是用自定义权限注解,只需要在接口上加上一个注解就可以实现对接口的权限拦截,是否对该接口有权调用 接下来 ...