面试题的一些汇总

1.	公司是做什么业务的
答:贯通云网快递平台网页版。集合了国内七大现有快递公司的业务终端,并在陆续扩展中。集中了在线填写,预约发件;智能跟踪,智能查询,快件信息管理等优点!
指尖快递APP---基于线上平台数据,建立快递代办点业务体系。
2.	2.公司有多少服务器
答:80台
3.	你负责多少台
答:我主要负责web服务器nginx的40台
4.	每台服务器都跑的啥
答:6台web,两台redis,6台数据库,还有nginx,tomcat,LVS负载+keepalived高可用什么的,剩下的都是平时测试用的。
5.	公司规模多大
答:中小型企业。
6.	公司有个运维
答:2个,我负载web端,另一个负责APP端。
7.	你的汇报对象是谁
答:我们老大
8.	你们公司用的什么语言
答:开发用的是JAVA
9.	你们的开发有多少人
答:开发是3个
10.	运维怎么分工的
答:也没啥分工,一起干
11.	你的期望薪资是多少
答:因为上家公司给的是13K,所以 不低于13吧
12.	你平时出差多吗
答:出差不多,因为公司业务主要都在线上。说实话我还是挺想出去走走的。
13.	你们学校是统招还是非统招
答:统招的。
14.	你们学校是全日制的吗
答:是全日制的
15.	你离职原因是啥
答:因为学历问题,公司要给我做降薪处理,有点接受不了
16.	你觉得你的优点和缺点是啥
答:优点:沟通能力强,团队协作能力强,乐于助人,喜欢学习。
    缺点:长得丑算吗?
17.	你工作之余有什么爱好
答:看一些技术方面的书,研究一些新的技术。
18.	你最近有学习过哪些新技术
答:python
19.	你住的地方,离公司有多远
公司在哪里,我就住哪里
20.	你们公司哪年成立的
答:2014年5月成立的。
21.	你们公司服务器都是什么型号
答:戴尔R710  R720 
22.	机房温度是多少
15--22
23.	你对加班怎么看的
答:我觉得IT行业加班很正常啊,如果我有幸进入公司的话,我会主动去加班,尽快熟悉公司业务,能早点上手工作。
24.	你来北京的原因
答:当时年轻气盛,跟我哥打赌来的。他来北京漂了两年,漂不下去了,就回家了,我就想,我必须在北京漂出个名堂。
25.	你是从什么时候开始接触Linux的
答:在大学的时候就有接触,当时是我的一个室友,他哥就是干运维的,有一次一起吃饭了解了一下运维这个行业。
26.	你的工资是怎么样的薪资结构
答:基本+绩效
27.	你现在是离职状态吗
答:是的
28.	你们过节都有什么福利
看老板心情
29.	你对你们领导的看法是
答:我们领导人还是挺好的,与人为善,挺随和,对我们也挺好的。
30.	如果让你入职了,你首先会怎么做
答:多跟公司的同事们沟通,尽快了解自己的工作和公司的业务,争取能早点上手工作
31.	你的学历学信网可查吗
答:我是民办本科毕业的,学信网好像查不了,民教网能查。
32.	你的年龄和身份证上 的不符合
答:没有不符啊,身份证上就是我的真实年龄。
33.	你门的机房放在哪
答:在三元桥那边,托管的。
34.	你能适应出差吗
答:刚才我也说了,我其实挺想出去看看的,毕业完了就来了北京,一直在这种快节奏的生活环境下,确实有点小累,而且我目前也是单身,没什么牵挂,可以说走就走。
35.	如果你跟领导的意见不一样,你会如何做
答:那就要看是什么方面的了,如果是技术方面的话,我觉得我会跟领导私下再去沟通一下,跟领导阐明我的观点和理由,剩下的就看领导的决定了。
36.	你能提上份工作的工资流水证明吗
答:离职以后想出国去旅游,当时开了一个资产证明,可以吗?
37.	你上份薪资多少
答:到手13K
38.	你跟同事关系怎么样
答:我们关系还是很好的,因为我这个性格就是喜欢交朋友,所以我跟我的同事们都是比较好的朋友。
39.	你是如何看待跳槽的
答:我觉得跳槽是一种不负责任的表现,进入公司以后公司对我们进行了培养,把我们培养成一个技术型人才,随意跳槽是对自己和公司不负责任。
40.	用三个词描述自己的优点,你觉得会是啥。 用三个词描述自己缺点,你觉得会是啥,分别对每个词进行举例子
答:优点:1.乐观  我是一个不善于表功的人,一般就是默默的做着自己的工作,而有时候功劳却会成文别人的,对此,我没有任何怨言,我相信,只有真正的付出了,才会有回报。
2.	开朗  我是一个外向的人,跟谁都能合得来,跟谁都能成为朋友,这也使我跟别人沟通的时候会有很好的效果。大家也都愿意跟我成为朋友。
3.	好学  我对新鲜的事物有特别中的好奇心,这使我特别喜欢研究一些新的技能,而且我都会把它搞清楚,弄明白。
HR面试题借鉴王济宇的(自己整理自己的HR面试题)
技术面试题:
41.	主从原理
答:从库的 I/O 线程去请求主库中的 bin-log 二进制日志,并将得到的 binlog 日志写到 relay log(中继日志) 文件中;
主库的 dump 线程用来给从库的 I/O 线程传送 binlog 二进制日志;
从库的 SQL 线程会读取从库中的 rely-log 文件中的日志,并且解析成具体的操作进行持久化,从而实现主从的一致;
 

42.	主从同步异常如何解决
答:1) 一般异常只需要跳过一步即可恢复
 >slave stop;
>SET GLOBAL sql_slave_skip_counter =1;
>slave start 
   2) 断电导致的不能同步,通过主库的最后一个bin-log日志进行恢复。 
   3) 主键冲突,表已经存在等错误代码如1602,1032,1060 可以在配置文件中指定
 【MySQL】
slave-skip-errors = 1060,1032,1060
43.	主从同步主服务器宕机如何处理?

答:1. 硬件问题宕机(服务器,ecs,虚拟主机) 查看IDC巡检记录,或通过远程控制卡查看硬件运行状态
1)	查看报警,确认业务是否受到影响,必要时切从库进行数据交换
2)	IDC询问排查
3)	确认硬件故障,通知部门领导,处理进度,并实时记录
4)	处理完成后,写故障报告,会议通报
2. 软件问题(服务中断)(一主多从的场景)
1) 判断是否影响业务,是否需要切库,保证业务的正常运行是首要任务。
2)先查看MySQL从库状态,若io线程和sql线程双YES,表示是同步的。(如果不同步,拷出binlog进行同步)
3)登陆从库进行查看,选OPS最大的作为主库
4)确保relay log 全部更新完毕
在每个从库上执行 stop slave io_thread;show processlist(在每个从库上执行)
5)设置选择的从库提升为主库master
6)所有的从库指向新的master
先保证业务的正常运行,暂时将从服务器变成主业务服务器;排查问题,先程序,看看数据库的各项指标,看日志,看端口,看所占用的内存,然后看硬件,网线,服务器本身是不是出问题,基本看日志就可以了。
44.	数据库备份如何做
答:MySQL dump+全备,bin-log增量备份。
45.	MySQL优化你做了哪些操作
答:1. 对Linux内核进行优化防止操作系统影响MySQL性能     
net.ipv4.tcp_fin_timeout = 30
#TIME_WAIT超时时间,默认是60s
net.ipv4.tcp_tw_reuse = 1
#1表示开启复用,允许TIME_WAIT socket重新用于新的TCP连接,0表示关闭
net.ipv4.tcp_tw_recycle = 1
#1表示开启TIME_WAIT socket快速回收,0表示关闭
net.ipv4.tcp_max_tw_buckets = 4096
#系统保持TIME_WAIT socket最大数量,如果超出这个数,系统将随机清除一些TIME_WAIT并打印警告信息
net.ipv4.tcp_max_syn_backlog = 4096
#进入SYN队列最大长度,加大队列长度可容纳更多的等待连接
2.为防止出现too many files open 调整打开文件句柄限制
vim /etc/security/limits.conf
#加入以下配置,*代表所有用户,也可以指定用户,重启系统生效
* soft nofile 65535
* hard nofile 65535
# ulimit -SHn 65535 #立刻生效

3.从硬件方面:加大物理内存,用SSD代替SAS或者将RAID级别调整为RAID10. 
4.	给数据库增加缓存,把热备数据加到内存中,提高读性能。我们公司用的是redis,之所以没用memcached主要考虑到想做数据的持久化。 
5. 当然还有些分库分表,当时跟Java开发和新来的DBA一起做的,把一些相关的表切分到不同的数据库里,把一些大字段放在一个单独的表里
6.开启慢查询日志,分析哪条SQL比较慢,我还跟DBA学了个工具 pt工具,主要用来分析慢查询日志,比如pt-querry-digest

46.	nginx优化你做了哪些操作

答:老服务的nginx优化我做的比较少,新业务当中在编译nginx的时候做过隐藏版本信息的优化,算是安全方面的优化把
在一个在安全方面还做过降权启动nginx,
性能方面的优化,我知道一些,比如优化nginx的进程个数(worker_process )
还有一些调整nginx单个进程的允许的客户最大连接数以及nginx worker进程最大打开数。
nginx 日志方面写过脚本实现nginx的日志轮询

47.	nginx怎么定义403错误界面

答:首先在nginx的http模块加入
   fastcgi_intercept_errors on;
然后再server模块加入的location/{
    
    }加入403.html

location / {
    
    
    deny   192.168.1.0/24;
    alllow all;
    error_page 403 /403.html;
     location  /403.html {
    
       
        allow   all;
     }
}

最后创建一个自己定义的页面
# vim 403.html 
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html>
<head><title>403 Forbidden</title></head>
<body bgcolor="white">
<h1>403 Forbidden</h1>
<p>You don't have permission to access the URL on this server. Sorry for the inconvenience.<br/>
This is a  our  test website, please visit our official website <a href="http://monitor.zmedu.com/fzj/index.html" title="Click View Site " ><font size="5"> monitor.zmedu.com </a>!
</font><br/>
Thank you very much!</p>
URL: http://monitor.zmedu.com/
<br/>Date: 
<script language="JavaScript" type="text/javascript">
var enabled = 0; today = new Date();
var date;
M=today.getMonth() + 1
D=today.getDate()
HH=today.getHours()
MM=today.getMinutes()
SS=today.getSeconds()
if (M<10)
{
M="0"+M
}
if (D<10)
{
D="0"+D
}
if (MM<10)
{
MM="0"+MM
}
if (HH<10)
{
HH="0"+HH
}
if (SS<10)
{
SS="0"+SS
}
date = (today.getFullYear()) + "/" + M + "/" + D + " " + HH+":"+MM+":"+SS +"";
document.write(date);
</script>
<hr/>Powered by zmedu.com!</body>
</html>


最后重启  :  /etc/init.d/nginx  reload
效果
 



48.	nginx平滑启动的命令是什么
答:/usr/nginx/sbin/nginx -s reload
/usr/nginx/sbin/nginx -t
49.	nginx和apache有什么区别
答:1. apache 相对于nginx 的优点:
rewrite ,比nginx 的rewrite 强大
动态页面,nginx处理动态请求是鸡肋,一般动态请求要apache去做,nginx只适合静态和反向。
模块超多,基本想到的都可以找到
少bug ,nginx 的bug 相对较多超稳定
2) nginx相对于apache的优点:
轻量级,同样起web 服务,比apache占用更少的内存及资源 ,支持更多的并发连接,体现更高的效率,这点使 Nginx 尤其受到虚拟主机提供商的欢迎。在高连接并发的情况下,Nginx是Apache服务器不错的替代品: Nginx在美国是做虚拟主机生意的老板们经常选择的软件平台之一. 能够支持高达 50,000 个并发连接数的响应, 这归功于Nginx为我们选择了 epoll and kqueue 作为开发模型.
抗并发,nginx 处理请求是异步非阻塞的,而apache 则是阻塞型的,在高并发下nginx 能保持低资源低消耗高性能
高度模块化的设计,编写模块相对简单
社区活跃,各种高性能模块出品迅速啊
Nginx本身就是一个反向代理服务器
负载均衡能力突出,Nginx 既可以在内部直接支持 Rails 和 PHP 程序对外进行服务, 也可以支持作为 HTTP代理 服务器对外进行服务. Nginx采用C进行编写, 不论是系统资源开销还是CPU使用效率都比 Perlbal 要好很多



50.	tomcat端口有哪些,都是什么用途
答:80port:服务器连接器的端口号,该连接器将在指定端口侦听来自客户端的请求。
8005 port:指定一个端口,这个端口负责监听关闭Tomcat的请求

51.	公司代码上线是怎么做的,发布周期是多长时间,一般什么时候上线
答:
最初始的代码上线
 
dev: 开发服务版本库  bate 测试服务版本库,  online线上服务版本库
测试通过后,再客户端选2000到3000个用户强制弹窗,让其更新版本。进行灰度发布。 有bug修复后再走一遍流程。
所谓的灰度发布: 根据自己的配置,将部分用户的流量导到新系统来验证新功能的修改,一旦出现问题可以马上修复。 
一周上线一次,周四上线,有问题就回滚,周五继续上线

2. 代码如何回滚,用jenkins如何实现
答:发布:jenkins配置好代码路径(SVN或GIT),然后拉代码,打tag。需要编译就编译,编译之后推送到发布服务器(jenkins里面可以调脚本),然后从分发服务器往下分发到业务服务器上。发布:jenkins配置好代码路径(SVN或GIT),然后拉代码,打tag。需要编译就编译,编译之后推送到发布服务器(jenkins里面可以调脚本),然后从分发服务器往下分发到业务服务器上。
回滚:按照版本号到发布服务器找到对应的版本推送
3. 什么是灰度发布,什么是灰度测试
答: 所谓的灰度发布: 根据自己的配置,将部分用户的流量导到新系统来验证新功能的修改,一旦出现问题可以马上修复

5. 上线前开发给你的包是什么包
答:jar war
6. svn与git相比有什么区别?
答:1)git 只关心文件数据的整体是否发生改变,而svn关心 的是内容是否改变
2)git的绝大多数操作只需要访问本地的文件和资源,不用联网查看所有的历史版本记录,而svn需要联网
3) svn断网后无法commit代码,而git可以先commit到本地仓库
4)git克隆一个完整项目非常快,而svn非常慢
范例一:
我们公司用的是SVN,但我私下里也学习了下git,个人感觉,SVN更好上手,但是论功能强大的化还是git好一些,比如同样是克隆一个完整项目,git就比svn快,而且有时候,一旦断网git可以commit到本地仓库,但是SVN就没法commit .  

7. 代码上线时运维需要做的事情?
答:配合开发搭建测试环境,调试,测试代码
	采购阿里云服务器,安装系统,配置服务
	部署上线过程中发现bug,与开发沟通,前端沟通,开发解决完继续上线
	出现问题,回滚(需要提前确定好回滚机制)
备份恢复:
52.	备份分为哪几种?
答:完全备份 增量备份 文件备份
53.	全量用什么工具,增量用什么工具
答:全量:XtraBackup
增量:mysqldump
1.	写脚本每天晚上0点,定时将B服务器数据备份到A,并把备份结果发给运维
#!/bin/sh
ip=$(/sbin/ifconfig eth0|sed -rn 's#^.*addr:(.*)  Bca.*$#\1#gp')
scp -rp -P52113 /data/ 192.168.100.61:~/data_$ip
if [ $? -eq 0 ]
        then
        echo "192.168.100.62 is ok" >> /home/heavenfish/bak62.log
        scp -rp -P52113 /home/heavenfish/bak62.log 192.168.100.61:~
fi
定时任务:
[heavenfish@B ~]$ crontab -e
####注释###
00 00 * * * /bin/sh /home/heavenfish/bak62.sh >/dev/null 2>&1
54.	备份主要备份什么?
答:1)	数据库中的数据
2)	MySQL配置文件
3)	存储过程,存储函数和触发器
4)	计划任务相关的脚本
5)	主从场景下,跟复制相关的信息
6)	二进制文件
web方面
1. nginx负载均衡的算法是怎么实现的,目前支持几种
答:目前支持五种算法:
1)	round robin(默认)
轮询方式,依次将请求分配到各个后台服务器中,默认的负载均衡方式。 适用于后台机器性能一致的情况。 挂掉的机器可以自动从服务列表中剔除
2)	weight
根据权重来分发请求到不同的机器中,指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
3)	IP_hash
根据请求者ip的hash值将请求发送到后台服务器中,可以保证来自同一ip的请求被打到固定的机器上,可以解决session问题。
4)	url_hash(第三方)
根据请求的url的hash值将请求分到不同的机器中,当后台服务器为缓存的时候效率高。
5)	fair(第三方)
根据后台响应时间来分发请求,响应时间短的分发的请求多。
2.	 nginx与apache相比有什么优势
答:作为web服务,nginx比apache占用内存资源少,处理请求上来看,nginx是异步非阻塞的,高并发下nginx有绝对的优势。而且nginx编写模块相对简单,社区活跃。所以我们公司再14年用的是apache,后来换成了nginx.而且我有个体会,apache改配置文件重启时候才知道有没有错,而nginx再重启前就可以用 -t测试配置文件有没有问题。

3.	nginx 的master和worker进程分别是什么?
答:master进程主要用来管理worker进程,包含:接收来自外界的信号,向各worker进程发送信号,监控worker进程的运行状态,当worker进程退出后(异常情况下),会自动重新启动新的worker进程。
worker进程则处理基本的网络事件。多个worker进程之间是对等的,他们同等竞争来自客户端的请求,各进程互相之间是独立的。一个请求,只可能在一个worker进程中处理,一个worker进程,不可能处理其它进程的请求。worker进程的个数是可以设置的,一般我们会设置与机器cpu核数一致。
4.	请解释什么是C10k
答:C10K问题的本质上是操作系统的问题。对于Web 1.0/2.0时代的操作系统,传统的同步阻塞I/O模型处理方式都是requests per second。当创建的进程或线程多了,数据拷贝频繁(缓存I/O、内核将数据拷贝到用户进程空间、阻塞,进程/线程上下文切换消耗大, 导致操作系统崩溃,这就是C10K问题的本质。
5.	 ngx_http_upstream_module的作用是什么
答:ngx_http_upstream_module 模块用于定义可以被 proxy_pass、fastcgi_pass 以及memcached_pass 等指令引用的服务器群。
6.	使用方向代理的优点?
答:防止主服务器被恶意攻击
为负载均衡和动静分离提供实现支持
7. nginx做过哪些方面的优化?
答:隐藏nginx header里版本号信息。
配置nginx worker的进程个数。
设置连接超时时间。
配置nginx gzip压缩功能。
8.	 动静分离中什么样的数据是动态数据,什么是静态数据
答:动态:随着时间的发展,常常变化的数据,如网站访问量、在线人数、日销售等
静态:是基本保持稳定的数据,比如一个单位的名称、员工信息、系统参数等
9.	 nginx导致磁盘空间占满的问题如何解决?(too many open files)
答:这个问题一般是打开文件数量超过了系统的设置数量,可以用ulimit -n 65535来修改最大允许的文件数。而且nginx.conf配置文件里不要设置太大的文件数。也有一种情况你使用df -h查看某个分区几乎被用光了,而用df -i 发现节点数没那么多,可以先停掉nginx,再启动,释放nginx占用的空间。
10.tomcat 默认端口号
答:8080
10.	 访问一个网站的流程
答:第一,将域名解析成ip的过程,第二,通过ip找到网站服务器,请求打开具体的网页,服务器响应请求,客户端浏览器收到响应报文后,渲染html文档,最终得到我们看到的网页页面。
12. tomcat调优
答:JVM参数的调节(根据Java开发的要求,在 catalina.bat中把JAVA_OPTS的值调大)
	耗时太长时候,为了测试,禁用DNS查询)
13. 如何修改tomcat的端口号
答:server.xml里把port = "8080" 改成你想要的端口就可以
14. tomcat 集群方式的优缺点
答:tomcat三种集群
     1) 使用DNS轮询
     2)使用apache R-proxy方式
     3)使用APACHE mod_jk方式
15. 负载均衡你听过哪几种,你们用的哪一种
答:LVS、NGINX、F5。我们用的是LVS的DR模式
16. LVS 与nginx相比有什么优缺点?
答:LVS:负载能力强、配置性低、工作稳定、无流量、能支持所有应用
Nginx:工作在第七层,可以针对HTTP应用本身做分流策略、对网络的依赖小、安装配置比较简单,测试起来也很方便、负载均衡和稳定度差了LVS几个等级
17. LVS目前实现的几种调度算法有?你们用的哪一种?说下原理?
答:调度算法:10种
轮询(rr)、加权轮询(wrr)、最少连接(LC)、加权最少连接(WLC)、最少队列调度(NQ)
我们用的是wrr加权轮询,它可以解决服务器间性能不一的情况,它用相应的权值表示服务器的处理性能,服务器的缺省权值为1。假设服务器A的权值为1,B的权值为2,则表示服务器B的处理性能是A的两倍。加权轮叫调度算法是按权值的高低和轮叫方式分配请求到各服务器。权值高的服务器先收到的连接,权值高的服务器比权值低的服务器处理更多的连接,相同权值的服务器处理相同数目的连接数	
18. LVS集群架构我们采用哪种调度算法?
答:一般使用加权轮叫调度算法或者加权最小连接调度。
19. LVS工作原理
答:LVS分为三层,调度层,server集群和共享存储
 
1)	当用户向负载均衡director server发送请求,调度器将请求发往内核空间
2)	prerouting链首先会接受用户请求,判断目标IP确定是本机IP,将数据包发往INPUT链
3)	IPVS是工作再input链上的,当2的请求过来后,IPVS会将用户请求和自己定义好的集群服务做对比。如果用户请求的就是定义集群服务,那么此时IPVS会强行修改数据包里的目标IP地址和端口,并将新的数据包发往POSTrouting链
4)	POSTROUTING链接收到数据包后发现目标IP刚好是自己的后端服务器,那么此时选路,将数据包最终发往真实的后端服务器。
注: 详细了解net模式原理图和DR模式原理图
http://www.sohu.com/a/126661836_467792##2

20.	 大致说一下LVS搭建过程
答:配置分发器的网络环境、配置LVS-DR规则、安装服务并开启、配置网络环境、关闭APR包的转发、测试
21. LVS在项目运行前需要注意什么问题
答:1.keepavlied 主备之间要开放防火墙
    	2. keepalived 主备要接在同一个交换机上使用DR模式时候,如果跨了交换机,可能出现主备都有流量
    	3. 版本号一致
22. 查看tomcat进程号和端口号
答:查看Tomcat的进程号:ps -aux | grep tomcat/ps -ef | grep tomcat
查看Tomcat的端口号:lsof -i | grep 8080
23. 简单描述nginx 与 php-fpm的两种连接方式及优缺点

答:nginx与php-fpm连接的两种方式为:tcp-socket 和unix-socket

unix socket方式要比tcp的方式快,而且消耗资源少,因为socket之间在nginx和php-fpm的进程之间通信,而tcp需要经过本地回环驱动,还要申请临时端口和tcp相关资源。
unix socket会显得不是那么稳定,当并发连接数爆发时,会产生大量的长时缓存,在没有面向连接协议支撑的情况下,大数据包很有可能就直接出错并不会返回异常。而TCP这样的面向连接的协议,多少可以保证通信的正确性和完整性。
24.	web服务器错误代码(200、201、301、404、500、502、503)代表什么?
答:200-确定。客户端请求已成功。 
201-已创建。 
301-对象已永久移走,即永久重定向。
404-未找到。 
500-内部服务器错误。
502-Web服务器用作网关或代理服务器时收到了无效响应。 
503-服务不可用。这个错误代码为IIS6.0所专用。 
25. nginx组成部分及常用模块有哪些
答:三部分:全局块、events块、http块
worker性能相关配置  进程的数量,nice值,能打开文件的数量上限
时间驱动events相关的配置   
http核心模块相关配置ngx_http_core_module
web服务模板   虚拟主机
隐藏版本信息
location匹配
错误页面显示 
长连接相关配置
请求报文缓存
26. nginx怎么自定义403错误界面
答:error_page 403 /403.html
27. keepalived原理
答:keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议。
虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将Ñ台提供相同功能的路由器组成一个路由器组,这个组里面有一个主和多个备份,主上面有一个对外提供服务的VIP(该路由器所在局域网内其他机器的默认路由为该VIP),主会发组播,当备份收不到VRRP包时就认为主宕掉了,这时就需要根据VRRP优先的级来选举一个备份当master。这样的话就可以保证路由器的高可用了。
keepalived主要有三个模块,分别是核心,检查和vrrp.core模块为keepalived的核心,负责主进程的启动,维护以及全局配置文件的加载和解析。检查负责健康检查,包括常见的各种检查方式。 VRRP模块是来实现VRRP协议的。
28.	tomcat工作模式
答:即阻塞式I/O操作,表示Tomcat使用的是传统的Java I/O操作(即java.io包及其子包)。是基于JAVA的HTTP/1.1连接器,Tomcat7以下版本在默认情况下是以bio模式运行的。一般而言,bio模式是三种运行模式中性能最低的一种。我们可以通过Tomcat Manager来查看服务器的当前状态。(Tomcat7 或以下,在 Linux 系统中默认使用这种方式)
一个线程处理一个请求,缺点:并发量高时,线程数较多,浪费资源
二、nio(new I/O)
是Java SE 1.4及后续版本提供的一种新的I/O操作方式(即java.nio包及其子包)。Java nio是一个基于缓冲区、并能提供非阻塞I/O操作的Java API,因此nio也被看成是non-blocking I/O的缩写。它拥有比传统I/O操作(bio)更好的并发运行性能。要让Tomcat以nio模式来运行只需要在Tomcat安装目录/conf/server.xml 中将对应的中protocol的属性值改为org.apache.coyote.http11.Http11NioProtocol即可利用 Java 的异步请求 IO 处理,可以通过少量的线程处理大量的请求
三、apr(Apache Portable Runtime/Apache可移植运行时) ( 安装配置过程相对复杂)
Tomcat将以JNI的形式调用Apache HTTP服务器的核心动态链接库来处理文件读取或网络传输操作,从而大大地提高Tomcat对静态文件的处理性能。Tomcat apr也是在Tomcat上运行高并发应用的首选模式。从操作系统级别来解决异步的IO问题
APR是使用原生C语言编写的非堵塞I/O,利用了操作系统的网络连接功能,速度很快。 
但是需先安装apr和native,若直接启动就支持apr,能大幅度提升性能。
zabbix:
1.你们zabbix运行在什么环境里
答:Zabbix Server需运行在 LAMP(Linux+Apache+Mysql+PHP)环境下对硬件要求低
2.	zabbix有哪些组件
答:zabbix_agent Zabbix_get Zabbix_server Zabbix_proxy
3.	zabbix是怎么实施的
答:agentd需要安装到被监控的主机上,它负责定期收集各项数据,并发送到zabbix server端,zabbix server将数据存储到数据库中,zabbix web根据数据在前端进行展现和绘图。这里agentd收集数据分为主动和被动两种模式:
主动:agent请求server获取主动的监控项列表,并主动将监控项内需要检测的数据提交给server/proxy
被动:server向agent请求获取监控项的数据,agent返回数据。
4.	zabbix是怎么微信报警的
答:首先需要申请一个微信企业号,点击通讯录创建公司和部门,添加需要的信息,然后添加成员信息,填上微信号,手机号、邮箱、三者中的一个,能够和报警的微信号匹配,然后用添加的微信号扫描二维码关注,收集资料:应用ID 、部门ID 、成员账号 、cropid、Secret,添加到报警脚本里面(第一组答案)
答:1.首先,需要有一个微信企业号。(一个实名认证的[微信号]一个可以使用的[手机号]一个可以登录的[邮箱号]
2.下载并配置微信公众平台私有接口。
3.配置Zabbix告警,(增加示警媒介类型,添加用户报警媒介,添加报警动作)。(二组答案)
5.	 zabbix监控了多少客户端,客户端是怎么进行批量安装的
答:监控了40台机器,客户端用ansible分发的配置文件,配置文件里面设置了被动发现。
6. 你维护的zabbix监控有多少节点(监控项)。 zabbix数据存放在哪
答:监控了web服务的几个选项,机器的状态,数据库的状态,加起来是30多个选项;数据存放在数据库的var/lib/mysql
7. zabbix数据越来越大,有什么样的解决方案
答:将数据迁移到其他地方或者直接将不需要的数据清除
8. zabbix是否支持读写分离
答:zabbix本事没有读写分离,但是可以对储存zabbix数据的数据库进行读写分离
9. 线上的zabbix用的哪种模式监控,服务器怎么监控,有哪些业务做了监控,做么做的
答:主动监控,通过agent这个客户端去监控,要么是自带的模板,要么就是自己写一个模板,zabbix支持很多的扩展。
10. zabbix中的item是什么
答:Item是从主机里面获取的所有数据。通常情况下我叫itme为监控项
11. zabbix用  的哪个版本
答:3.2版本,因为这个版本比较稳定
12. zabbix如果要监控100台机器,最快的方式你怎么做
答: 使用server端的自动发现,使用ansible或者saltstack进行快速部署agent端配置文件,然后配置自动发现即可
13. zabbix那台服务器如果出现问题怎么解决
答:一般问题有:
找不到url,原因:Apache缺少指向/usr/share/zabbix相关目录的配置文件
解决办法:配置/etc/httpd/conf.d/zabbix.conf文件内容如下
服务器无法处理说当前请求,PHP解析出错,原因:PHP版本太低,需要安装PHP5.4以上的版本
解决办法:CentOS6默认yum安装的是php5.3,需要构建yum源安装或进			行源码安装高版本PHP
服务器无法处理当前请求,权限不足,原因:apache对/etc/zabbix/web/maintenance.inc.php文件的权限不足导致处理中断
解决办法:更改/etc/zabbix/web/目录的属主

14. zabbix模板有自己写过吗
答:比如监控nginx,脚本就不说了,主要是agent里面加的规则,在zabbix_agentd.conf中添加UserParameter=nginx.status[*],/bin/bash /etc/zabbix/scripts/nginx_status.sh $1
15. zabbix是否可以实现当一个服务断掉,就触发一个动作,然后重启
答:只会执行,成功不成功不会检测。
远程执行命令是server端向agent端执行,不支持主动模式的agent、不支持代理模式、zabbix用户必须对命令具有执行权限,可以使用sudo赋予root权限(配置sudo无密码方式)、远程命令只是执行,执行成功与否并不检测并确认,可在” Monitoring-->Events”中查看action执行时,或在”Reports-->Action log”中查看远程命令是否执行成功(成功为” Executed”)。
16.	zabbix自动发现怎么做
答:agent端指定自动发现的ip
客户端正常创建
Configuration-->Discovery-->Creat discovery rule
Name:自动发现规则的名字
Discovery by proxy:是否使用代理
ip range:扫描地址段,可以配置为单个IP
Delay(in sec):延迟时长,为了试验效果,建议设置小一点,一分钟即可
checks:检查客户端手段
Device upiqueness criteris:设置唯一标准性
Enable:启动
17.zabbix监控MySQL哪些参数, zabbix监控硬件哪些参数
答:查询吞吐量 查询执行性能 连接情况 缓冲池使用情况
18.zabbix监控硬件哪些参数
答:CPU使用情况,内存使用情况,网络情况,硬盘挂载使用率等
19.	除了zabbix你还用过哪些监控工具
答:Nagios、openfalcon
20. zabbix监控和nagios有什么区别
答:Nagios简单直观,报警与数据都在同一页面,红色即为问题项。Nagios web端不要做任何配置。
Zabbix监控数据与报警是分开的,查看问题项需要看触发器,查看数据在最新数据查看。而且zabbix有很多其它配置项
Nagios要花很多时间写插件,Zabbix要花很多时间探索功能。
Nagios更易上手,Nagios两天弄会,Zabbix两周弄会。
Zabbix画图功能比Nagios更强大
高薪技术必备:
1. 你知道的中间件有哪些?
答:Tomcat、redis、memcache
2.memcache与redis区别?
答:数据结构:Memcache仅能支持简单的K-V形式,Redis支持的数据更多
多线程:Memcache支持多线程,Redis支持单线程,CPU利用Memcache利用率更高
持久化:Redis支持持久化,Memcache不支持持久化
分布式:Redis做主从结构,而Memcache服务器需要通过hash一致化来支撑主从结构
虚拟内存:Redis当物理内存使用完时,会将一些很久没有用的内存交换到磁盘,而Memcache采取的LUR策略,将一部分数据刷新
3.	redis如何做持久化?
答:Redis有二种持久化方式:
1.	RDB: 将Redis内存中的数据,完整的生成一个快照,以二进制格式文件(后缀RDB)保存在硬盘当中。当需要进行恢复时,再从硬盘加载到内存中。(Redis主从复制,用的也是基于RDB方式,做一个复制文件的传输。)
2.	AOF:就是写日志,每次执行Redis写命令,让命令同时记录日志(以AOF日志格式)。Redis宕机时,只要进行日志回放就可以恢复数据。
4.使用redis有什么好处
答:速度快,数据运行在内存当中,但要小心占全部内存
   	支持的数据类型丰富,
   	支持事务
   	可以做缓存,消息队列,可以设置过期时间。
   	在排行榜,计数器,发布和订阅场景下都在使用redis
   	但是reids 不能保证数据的一致性,在特定条件下可能会丢失写操作
5.redis集群的原理
答:redis一般最少是6台机器,3主3从的结构,就是说,每台主至少会有一台从机;每一个节点都会存有这个集群所有主节点以及从节点的信息。
投票机制:
它们之间通过互相的ping-pong判断是否节点可以连接上。如果有一半以上的节点去ping一个节点的时候没有回应,集群就认为这个节点宕机了,然后去连接它的备用节点。

如果一半以上的主宕机,集群就会进入fail状态
6.docker集群最大节点数是 
答:16384个
7.怎么测试redis连通性?
答:使用ping命令
8.列出安装hadoop流程步骤
答:1) 创建Hadoop账号
   	2)更改ip
   	3)安装Java环境
   	4)修改host文件域名
   	5)安装ssh配置无密钥登陆
   	6)解压hadoop包
   	7)配置conf 下面的配置文件
   	8)hadoop namenode-format 格式化
   	9) start 启动
9.日志分析主要分析哪些数据?
答:1、基础信息,总抓取量、停留时间(h)及访问次数这三个基础信息;
2、目录抓取,提取出爬虫抓取的目录,分析每日目录抓取量;
3、时间段抓取,提取每日的时间段的爬虫抓取量,重在分析每日的抓取情况,找到相应的抓取量较为密集的时间段;
4、IP段的抓取,进行统计,每日每个IP的抓取量;
5、状态码的统计,HTTP状态码返回值

10.ELK由哪及部分组成,每个的作用是啥
答:Elasticsearch 是一个分布式的搜索引擎,负责搜集、分析、存储数据三大功能
Logstash 用来日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式。
Kibana 提供一个友好的web界面
Logstash去搜集所需要的日志,进行过滤-->Elasticsearch再次去分析,存储-->Kibana 将搜集的数据展示到web页面上

11.ELK主要用来分析哪些数据
答:主要就是一个日志分析系统,常用的有web日志,数据库日志。也可以监控系统的硬件和应用各个组件的状态。
12.ELK能用来做什么?
答:分析日志,也可以做系统监控,报表功能。
13.ES常用插件有哪些?
答:head是一个与Elastic集群相交互的Web前台
  	kopf管理工具  
bigdesk集群提供动态的图表与统计数据
14.kibana是什么,有什么作用
答:Kibana是一个优秀的前端日志展示框架,它可以非常详细的将日志转化为各种图表,就是为了提供可视化
15.ansible与saltstack区别
答:1.响应速度
	SaltStack的master和minion主机是通过ZeroMQ传输数据,而Ansible是通过标准SSH进行数据传输,SaltStack的 响应速度要比Ansible快很多。
2.安全
SaltStack使用ZeroMQ进行数据传输,ZeroMQ本身不加密,AES加密,需注意MITM攻击
Ansible使用标准SSH连接传输数据,不需要在远程主机上启动守护进程,并且标准SSH数据传输本身就是加密传输,这样远程主机不容易被攻击。
3.自身运维
	SaltStack需要在Master和Minion主机启动守护进程,自身需要检测守护进程的运行状态,增加运维成本。Ansible和远端主机之间的 通信是通过标准SSH进行,远程主机上只需要运行SSH进程就可以进行运维操作,SSH是机房主机中一般都安装和启动的进程,所以在Ansible进行运 维的时候只需要关注Ansible主机的运行状态。Ansible对机房运维不会增加过多的运维成本。从工具本身的运维角度来说,Ansible要比 SaltStack简单很多。
4.使用语法
	Ansible的Playbook语法要比SaltStack的State语法具有更好的可读性。在使用的过程中发现Ansible在实现loop的更加的简洁,也可以使用相对路径。
16. ansible 使用过哪些模块
答:copy模块,file模块,cron模块,group模块,yum模块,service模块,ping模块
17. 你们在公司主要用来做什么
答:主要是用来批量自动化的去给我们的服务器部署一些服务

18. elk中的logstash是怎么收集日志的,在客户端的logstash配置文件主要有哪些内容?
答:通过指定的配置文件,按规定的正则去收集指定文件里的数据。
input指定的输入filter过滤规则output输出到指定的地方



运维案例

1.有客户反映无法访问网站
案例:有客户说访问不到你们的网站,但是你们自己测试内网和外网都是通的,你会怎么排查并解决客户的问题。我们自己测了都没问题,只是这个客户访问有问题,那肯定是要先联系到这个客户,能远程最好问一下客户的网络是不是正常的,访问其它的网站有没有问题(比如京东、百度什么的)如果访问其它网站有问题,那叫客户解决本身网络问题。
如果访问其它网站都没问题,
    用ping和nslookup解析一下我们的网站是不是正常的,让客户用IP来访问我们的网站是否可行,
    如果IP访问没问题,那就是客户的DNS服务器有问题或者DNS服务器解析不到我们的网站。
    还有一种可能就是跨运营商访问的问题,比如我们的服务器用的是北方联通、而客户用的是南方移动,就也有可能突然在某个时间段访问不到,这种情况在庞大的中国网络环境中经常发生(一般是靠CDN解决)。
    还有可能就是我们的网站没有SSL证书,在公网是使用的是http协议,这种情况有可能就是没有用https协议网站被运营商劫持。
2.如果网站出现了5XX错误,你会如何解决?

案例:在服务器处理请求时出问题了,服务器可以发一个 5xx 系列错误码给客户端,表示服务器在处理请求的时候出问题了,问题是出在服务器身上而不是客户端身上。
以nginxWeb服务器为例的:
5xx: 服务器错误
501  服务器不具备完成请求的功能。例如,服务器无法识别请求方法时可能会返回此代码。
503  服务器目前无法使用(由于超载或停机维护)。通常,这只是暂时状态。(服务不可用)
505  服务器不支持请求中所用的 HTTP 协议版本。(HTTP 版本不受支持)
一、解决500错误:
1、500错误指的是服务器内部错误,也就是服务器遇到意外情况,而无法履行请求。
2、500错误一般有几种情况:
(1)web脚本错误,如php语法错误,lua语法错误等。
(2)访问量大的时候,由于系统资源限制,而不能打开过多的文件
3、一般分析思路:
(1)查看nginx error log ,查看php error log
(2)如果是too many open files,修改nginx的worker_rlimit_nofile参数,使用ulimit查看系统打开文件限制,修改/etc/security/limits.conf
(3)如果是脚本的问题,则需要修复脚本错误,并优化代码
(4)各种优化都做好,还是出现too many open files,那就要考虑做负载均衡,把流量分散到不同服务器上去了
二、解决502,504错误
https://blog.csdn.net/chris_hee/article/details/83359438
https://blog.csdn.net/fangoooooooooooo/article/details/80103444


1、使用nginx代理,而后端服务器发生故障;或者php-cgi进程数不够用;php执行时间长,或者是php-cgi进程死掉;已经fastCGI使用情况等都会导致502、504。
2、502 是指请求的php-fpm已经执行,但是由于某种原因而没有执行完毕,最终导致php-fpm进程终止。
一般来说,与php-fpm.conf的设置有关,也与php的执行程序性能有关,网站的访问量大,而php-cgi的进程数偏少。针对这种情况的502错误,只需增加php-cgi的进程数。
具体就是修改/usr/local/php/etc/php-fpm.conf文件,将其中的max_children值适当增加。
这个数据要依据你的VPS或独立服务器的配置进行设置。一般一个php-cgi进程占20M内存,你可以自己计算下,适量增多。
/etc/init.d/php-fpm restart 然后重启一下.
3、504 表示超时,也就是客户端所发出的请求没有到达网关,请求没有到可以执行的php-fpm。与nginx.conf的配置也有关系。


3.如果网站访问很慢,你会如何排查
https://blog.csdn.net/lufeisan/article/details/53150971

范例一: Linux 中一个java进程占用cpu很高
解决: top -p 33301    strace -p 33301
范例二: 线上的一台服务器,总出现访问慢的情况,点击一个链接要2S以上时间才打开,按照当时对访问人数的统计,服务器不应该这么慢,所以我做了对apache进程进行分析。
一. 在页面访问变慢的时候,我用top查看服务器负载,发现负载不高,因此有可能不是程序问题。
二. 我查看了线程中HTTP的数量,线程达到了访问最大值,由此断定是访问人数过多导致的
三. 为了验证,我用netstat查看连接数和当前连接数,发现访问量特别大,超出了我们的估算值。
四. 查看了用户访问页面的情况,把access_log打开,发现90%以上的访问都是直接访问资源文件,猜测可能用户使用了多线程下载工具,或者遭受了盗链。
解决方法: 对单个IP链接的线程限制,不允许多个线程链接资源。 我当时采用的是mod_limitipconn这个模块。  然后添加URL重写,防止盗链。

4. cpu突然飙高如何处理 

像这种情况有很多种可能:
1.同时运行的应用太多了,占用服务器资源
2.服务器内存存的数据太多了 
3.服务器被CC攻击了 
4.某个程序起冲突了
案例:有个java进程占用cpu资源特多
解决:
使用top查看进程维度的CPU负载
通过 top 命令查看系统的负载问题,并定位耗用较多 CPU 资源的进程,发现是个java进程,将进程信息发送给java开发,确定此进程无用,便将此进程杀掉,cpu问题就解决了。


5.数据库强制关闭导致故障排查案例

https://blog.csdn.net/jethai/article/details/52345231

案例:
mysql意外断电后启动mysql数据库报错
Another MySQL daemon already running withthe same unix socket.
本地登录mysql数据库提示:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (111)
原因:
mysql没有正常停止,机器重启后mysql.sock一直存在,但机器重启后mysql实际上为启动的,
所以呢需要把/var/lib/mysql 下的mysql.sock文件给删掉,然后就可以启动了
6. CDN或者IDC机房带宽增加很高案例分析
案例: 
   有一次我们公司在做一个推广活动,CDN带宽突然增加很多,第一反应是不是遭受DDOS攻击了,或者是内部服务器中毒,比如redis服务器就有一次被当作矿机,
原因:
内部服务器中毒,大量外发流量。
解决办法:
我联系机房确定机房自身无问题后(机房一般没法帮我们的),请机房断开连接外部IP服务器的网线,如负载均衡器,仅保留VPN SERVER,然后断掉内部服务器出网光关的线路,切断外发流量源头。
     接下来查看监控流量服务,判断外发流量的服务器,然后进行处理。

7. 一次网站迁移故障案例分析
案例:
公司服务器要整改,准备用一台新服务器安装LAMP环境,承担现在的WEB服务器,然后将现有的服务器重新规划整理。当把代码用rsync同步到新服务器上,开启apache服务,做好DNS解析后,刚开始访问的时候是没问题的!但是在不到一分钟的时候,网站就打开的非常慢,主页打开时间有时到了几分钟(几乎相当于访问不了),查看Apache报错日志,没有明显的错误异常日志;
原因:
原因是perfork模式的参数设置有问题,根本就没生效,而导致采用默认的256,但是现在的链接并发数已经大于256了,所以后面的访问用户就处在等待的状态,也就出现了一分钟后就访问特别慢的情况;
解决办法:
遇到这种问题的时候,我们要先分析故障原因,定义问题出现的大范围,这次故障是在服务器压力并不大的时候就出现访问很慢的现象,所以我们可以确认不是服务器本身的问题,而是配置问题。
先通过服务器的top命令我们可以得到不是服务器硬件的问题
再通过内网访问,得到的也不是网络的因素
创建静态页面,排除apache以外其他服务配置问题
查看配置文件,找到了问题所在,然后解决问题
具体解决方式在以下网址:一次生产环境web服务迁移故障总结与反思http://blog.51cto.com/oldboy/1227976
8.一主多从,主从库分别宕机解决案例
案例:
早晨发现msyql主宕机,并且没有任何异常记录,日志表现为执行shutdown命令,但是shwtdown完成后没有重新启动
原因:
是因为apt的自动更新导致的mysql shutdown
解决办法:
如果是主宕机的话,那么读写服务都不能提供了,我们就要把从提升为主,首先我们要确保从库把所有的relay log日志都读取完毕,然后通过show slave status查看,如果几个从库io进程都是正常,没有落后于主的话,选择哪个从都是一样的,然后我们进入从库,执行stop slave;然后进入数据库目录,删除aster.info和relay-log.info文件,删除之前先做下备份,然后配置my.cnf文件,开启log-bin,把程序里面之前记录的master的IP改成现在从的IP,重启就解决了这个问题
具体解决方式在以下网址:具体解决方式在以下网址:
9. 网站遭受木马攻击,导致网站目录下所有的文件被篡改
案例:
公司一个lamp的服务器站点目录下的文件一打开就会出现另一个网址
原因:
所有文件都被植入了一下内容<script language=javascript src=http://luoahong.blog.51cto.com/504977/1827164>包括图片文件也被植入了,网站打开时就会调用这个地址,造成的影响很恶劣
解决办法:
遍历所有目录有文件 把以上被植入的内容删除掉。[root@test ~]# find /oldboy -type f|xargs sed -i 's# <script language=javascript src=http://luoahong.blog.51cto.com/504977/1827164>##g'
1、  先备份数据。然后,执行命令批量修改回来。
2、  a.备份原始出问题的原始文件; b.历史备份覆盖;c.find+sed 替换;
[root@test ~]find. -type f -exec sed -i ‘s#<script language=javascript src=http://luoahong.blog.51cto.com/504977/1827164>##g’ {} \;
查看处理结果,详细查看了日志,追踪问题发生来源
10. fstab修改错误导致系统无法启动修复案例
案例:
为了公司需要,在linux下修改自动挂载/dev/sda5到/u01,修改成/dev/sda5/weblogic,于是把fstab文件中/u01修改成了/weblogic,启动时报无法挂载错误,进入repair filesystem模式后,想要修改/etc/fstab,结果文件都是read only
原因:
把fstab文件中/u01修改成了/weblogic,原因是把配置文件修改错误了
解决办法:
1.启动linux提示失败,输入root账户密码,进入 repair filesystem#,注意此时修复fstab文件会提示readonly无法保存修改。
2.提权成root
3.mount / -o remount
这时候,/etc/fstab就可以修改了,这一步是核心内容
4.修改fstab文件  vi /etc/fsta

11. Linux服务器中木马,手工清除方法 

 https://www.cnblogs.com/shiyiwen/p/5191869.html
故障现象:
那天下午有几台服务器出现流量超高,平时只有几百M的流量,那时候发现流量上G了,达到这个量第一感觉就是遭受了DDOS流量攻击,那时候手上的服务器比较多,出现几台并没有放在眼里,觉得查查就可以出来结果。
原因:
iftop发现我们的服务器一直向外大量发包,对某个IP的流量能到达600多M,这时我们意识到服务器被黑了
解决方案:
一直在杀进程,刚开始进程杀了又起来,文件删了又自动生成,线上环境又没有防火墙配置,无奈之下只好想了一个怪招,把/bin/bash重命名一下,果然流量下来了。

12记一次服务器被植入挖矿木马CPU飙升200%解
https://blog.csdn.net/bntx2jsqfehy7/article/details/79797937
故障现象:
我打开了服务器,看到Tomcat挂了,然后顺其自然的重启,启动过程中直接被killed,再试试数据库,同样没成功,多次尝试甚至重启机器无果,我打了个top,不知道谁的进程,因为它就是Tomcat等程序启动不了的元凶然而并没有什么用,过一会再看那个东西又跑出来占cpu。怀疑是个定时任务,
Crontab -l 进行查看,发现什么也没有,但是黑色的屏幕右下角有个白色方框,肯定是伪装的,
原因:
crul过去是下面的脚本,过程就是在挖矿,既然知道它是个定时任务,那就先取消了它,并且看看它是谁在运行杀掉,找到存放目录:进入临时目录:被我发现配置文件了,先来看看内容发现了不少信息啊,user是他的server的登录用户,下面是密码,只可惜加密过,应该找不到对方。干掉这两个文件后再查看top
解决方案:
找到寄生的目录,一般都会在tmp里,我这个是在/var/tmp/。首先把crontab干掉,杀掉进程,再删除产生的文件。启动Tomcat等程序,大功告成!
13. 9台nosql 同时宕机故障
http://www.361way.com/login-underlying-authentication/4216.html
故障现象:
晚上22:20分左右,手机收到现网主机的宕机拨测短信告警。收到宕机短信本属正常,现网业务有二千多台 server 难保其中哪台不出问题。可是还未能赶着打开电脑,紧接着同一时间又是8台主机的宕机短信。未查看工程文档核对主机之前,猜测怀疑是某一刀框出了问题,导致同一机框内的所有刀片不能服务。不过等查看过第一台以后,发现是pc server ,另外8台和第一台是同一业务下的另外几个节点。
原因:
通过查看9台主机的操作记录,都存在相同的histroy记录、ts_user用户登录和su操作(故障发生时间点之前几分钟内)。在9台主机上也通过echo $变量名 ,发现history记录中的部分变量是不存在的。导致前面一部分被解析成空。
解决方案:
在我的测试机中不存在变量$ABC ,所以$ABC被解析为空,这里执行ls  $ABC/ 的结果相当于执行成了 ls 同样,把变量改正确 
14. 大并发慢查询导致CPU资源耗尽,如何处理
https://support.huaweicloud.com/usermanual-rds/rds_12_0008.html
故障现象:
数据库实例上存在大量并发的select count(0)慢操作,系统CPU耗尽,随时有宕机的风险。
原因:
应用端大并发触发select count(0)慢操作,导致系统CPU资源耗尽。
解决方案:
申请kill权限,间歇性批量执行kill select count(0)慢操作,定位select count(0)触发来源,停止来源,并拆分优化sql。
15. crontab mailr op造成的拒绝房屋
http://www.361way.com/crontab-mailto-deny-ssh/4300.html

故障现象:
接业务同事电话,其中一台server无法ssh正常连接,同时也收到宕机短信告警信息。直接ping了下主机地址可以ping通.
原因:
crontab进程在执行时,每执行一次会向root 进行一次汇报。即会调用后面的sendmail 进程和postdrop 进程,邮件文件会存放在/var/spool/postfix/maildrop目录 ,查看logcollect 用户的crontab任务发现, 有几百个crontab任务存在,造成maildrop目录文件越堆越多。目录被占满后,导致sendmail和postdrop进程长时间得不到释放。进程越堆越到,直到资源耗尽,ssh连接异常。
解决方法:
禁用crontab MAILTO功能或crontab中新增自动清理/var/spool/postfix/maildrop目录。当然比较推荐前者,crontab里启用这个本来就是个资源浪费的功能---有查看root下的性能汇报需求者除外。禁用crontab的mailto功能操作步骤为:
vi /etc/crontab 
将‘MAILTO=root’替换成‘MAILTO="",
然后service crond restart即可。
后记:
另外,这个问题和Suse工程师也沟通过,该问题更多的是操作规范性的范畴。如果在每个crontab任务后面加上1>/dev/null 2>&1 ,就不会出现邮件调用到maildrop目录的问题了。这里由于crontab任务过多,使用了在用户的crontab配置首行增加MAILTO=""的方法。

16.inode满导致passwd 命令出错处理
http://www.361way.com/passwd-token-manipulation-error/4304.html

故障现象:
1、修改密码时报错 passwd: Authentication token manipulation error
2、添加用户报错:unable to lock password file 
分析问题:
1、检查相关配置文件
 /etc/passwd 
 /etc/shadow
检查上面两相配置文件并与正常主机进行比对,未发现异常。
2、查看磁盘使用率
根据报错信息,google查看提示有可能是磁盘空间满引起。不过通过df 查看时未发现异常
3、strace追踪分析
使用命令strace -f passwd 追踪分析原因,看到关键报错信息:“No space left on device”,即然df查看硬盘空间够用,很可能就是inode满了。查看的确是根分区inode满了,然后清除了一些小文件.
17.阿里云ssh连接慢问题处理
http://www.361way.com/aliyun-ssh-slow/5771.html

一、问题描述
阿里云平台上分发的虚拟机会有ssh连接慢的问题(一般30多秒才能出现密码认证界面,同一模板分发的虚拟机,一小部分有ssh连接慢的问题)。
通过查看sshd_config配置文件,发现影响ssh连接两项已做过处理:
UseDNS=no
GSSAPIAuthentication no
而主机OS重启后,ssh连接慢的问题就没有了。
1、排查网络影响
通过阿里云内部的主机通过内网连接发现同样慢。通过ssh 127.0.0.1也同样很慢。
2、ssh连接详情分析
通过 ssh -v参数查看详细连接过程。发现只除了认证等待时间过长外,后面未发现异常。
三、问题解决
通过查询到的资料,了解到问题原因为:dbus的服务重启后,systemd-logind服务没有重启导致。故而在日志中会出现“[system] Failed to activate service ‘org.freedesktop.login1‘: timed out”的报错。解决方法为重启systemd-logind服务。命令如下:
systemctl restart systemd-logind
systemctl status systemd-logind


18.mysql innodb异常修复
https://www.linuxprobe.com/mysql-innodb-yichang.html

启动mysql服务,提示未知/不支持的表类型:innodb,无法正常启动。
删除/ var / lib / mysql /目录,重新启动数据库服务,并初始化,发现正常,show engines能发现有innodb引擎。再将数据库停掉,将之前备份的/ var / lib / mysql /目录的内容覆盖当前位置的内容,重启。又发现不能进行启动,报错内容和刚刚一样。
wiki目录是测试数据的库,ib开头的两个文件为日志文件,mysql目录下为系统库相关的东西。再次使用初始化的数据,并将wiki目录和ibdata1文件覆盖到/ var / lib / mysql目录下,可以正常启动,也可以正常登录。
打开迫使-InnoDB的恢复官方页面,发现可以通过指定innodb_force_recovery参数,进行强制启动和恢复在/etc/my.cnf中中增加如下内容:
1.	innodb_force_recovery = 6= 6

不过在通过mysqldump备份时,又提示unknow table engine“Innodb”。登录后,查看当前所有的引擎类型,发现其中果然不存在innodb类型:

由于mysql innodb数据文件的特性,可以在出现问题,无法正常启动时,先将./ib
_logfile0和./ib_logfile1两个日志文件先移走,再启动,如果还不成功,可以用innodb_force_recovery参数进行强制恢复。除此之外,日志也很重启,有问题先看日志。
19.已删除但空间不释放问题的分析与解决办法
https://www.jb51.net/LINUXjishu/224652.html

1、错误现象
运维的监控系统发来通知,报告一台服务器空间满了,登陆服务器查看,根分区确实没有空间了,由于Linux没有回收站功能,我们的线上服务器所有要删除的文件都会首先移动到系统/tmp目录下,然后定期清除/tmp目录下的数据。这个策略本身没有问题,但是通过检查发现这台服务器的系统分区中并没有单独划分/tmp分区,这样/tmp下的数据其实是占用了根分区的空间。既然找到了问题,那么删除/tmp目录下一些大数据即可
从输出可以看到,根分区空间仍然没有释放,这是怎么回事?
2、解决思路
之所以出现删除access_log文件后,空间还没释放,就是因为httpd进程还在一直向这个文件写入内容,导致虽然删除了access_log文件,但文件对应的指针部分由于进程锁定,并未从meta-data中清除,而由于指针并未被删除,那么系统内核就认为文件并未被删除,因此通过df命令查询空间并未释放也就不足为奇了。
3、问题排查
既然有了解决问题的思路,那么接下来看看是否有进程一直在向acess.log文件中写数据,这里需要用到Linux下的lsof命令,通过这个命令可以获取一个已经被删除但仍然被应用程序占用的文件列表. 
从输出结果可以看到,/tmp/acess.log文件被进程httpd锁定,而httpd进程还一直向这个文件写入日志数据,说明这个日志文件已经被删除,但由于进程还在一直向此文件写入数据,空间并未释放。
4、解决问题
到这里问题就基本排查清楚了,解决这一类问题的方法有很多种,最简单的方法是关闭或者重启httpd进程,当然也可以重启操作系统,不过这并不是最好的方法,对待这种进程不停对文件写日志的操作,要释放文件占用的磁盘空间,最好的方法是在线清空这个文件,可以通过如下命令完成:
echo " " >/tmp/acess.log
通过这种方法,磁盘空间不但可以马上释放,也可保障进程继续向文件写入日志,这种方法经常用于在线清理Apache、Tomcat、Nginx等Web服务产生的日志文件

20.linux Argument list too long错误解决方法
https://blog.csdn.net/fdipzone/article/details/41558461

今日需要删除/tmp目录下的所有文件,文件数量比较多。
ls -lt /tmp | wc -l
385412
使用 rm * 后,系统提示错误 Argument list too long
原因是在linux下,试图传太多参数给一个系统命令(ls *; cp *; rm *; cat *; etc..)时,就会出现 Argument list too long错误。
解决方法如下:
使用find -exec 遍历,然后执行删除便可。
sudo find /tmp -type f -exec rm {
    
    } \

猜你喜欢

转载自blog.csdn.net/lq_hello/article/details/106288694