web、keepalived、lvs、nginx 面试常问解析
1.nginx代码状态代表啥意思 --(工作可以快熟定位故障)
200:服务器正常响应
301:资源永久重定向
302:资源临时重定向
403:访问请求被禁止
404:服务器找不到客户端请求的资源
500:服务器内部错误
502:代理服务器从后端收到了一条伪响应;bad gateway
2.维护网站过程中遇到的问题
1.今天上传了图片时报了个:413错误,怎么办?
解答:nginx对上传文件大小有要求,默认1m,如果很大,还要适当调整上传超时时间
命令:
client_max_body_size
限制请求体的大小,若超过所设定的大小,返回413错误
2.
504错误:请求后端服务的时候,后端服务很长时间才响应,
解答:查看错误日志后修改了proxy_read_timeout he proxy_read_time 完美解决
3.nginx出现访问502, bad gateway页面打开慢的问题,如何处理
第一种情况:网站的访问量大,而php—cgi的进程数偏少
针对这种情况的502错误,只需增加php-cgi的进程数,具体是修改/usr/local/php/etc/php-fpm.conf 文件,将其中的max_children值适当增加,这个数据要依据你的vps或者独立服务器的配置进行设置,一般一个php-cgi进程占20m内存,你可以自己计算下,适量增多
/usr/local/php/sbin/php-fpm restart 然后重启一下.
第二种情况:cpu占用率、内存占用率非常高,遭到cc攻击
解决方法:
1.就是利用本机的防火墙来解决可以安装CSF之内的防火墙,这种的弊端是只能防止小规模的CC攻击和DDOS(我的站在阿里云,所以不用太担心DDOS)CC攻击比较猛的话机器也直接CUP跑满了。
2.是添加CDN,这种防止CC攻击的方法是最好的,不过CDN一般都要钱,于是我找到一个https://www.yundun.cn/login,说是专门防CC DDOS的,其实也就是一个CDN,有免费的套餐,足够我这小站用了
第三种情况
cpu占用率不高,内存溢出
检查一下网站有没有问题?一般小偷站点常常会出现内存溢出
检查一下/var/log/目录下的日志,看看是不是有人爆破ssh和ftp端口?
ssh ftp遭到穷举也会占用大量内存,是的话,改掉ssh端口和ftp端口即可
简单版思路解决
从fastcgi配置入手
1.查看fastcgi进程是否已经启动
2.检查系统fastcgi进程运行情况
3.fastcgi执行时间过长
4.头部太大
详细版配置解决:
1.查看fastcgi进程是否已经启动
NGINX 502错误的含义是sock、端口没被监听造成的。我们先检查fastcgi是否在运行
2.检查系统Fastcgi进程运行情况
除了第一种情况,fastcgi进程数不够用、php执行时间长、或者是php-cgi进程死掉也可能造成nginx的502错误
运行以下命令判断是否接近FastCGI进程,如果fastcgi进程数接近配置文件中设置的数值,表明worker进程数设置太少
netstat -anpo | grep "php-cgi" | wc -l
3.FastCGI执行时间过长
根据实际情况调高以下参数值
fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300;
4.头部太大
nginx和apache一样,有前端缓冲限制,可以调整缓冲参数
fastcgi_buffer_size 32k; fastcgi_buffers 8 32k;
如果你使用的是nginx的负载均衡Proxying,调整
proxy_buffer_size 16k; proxy_buffers 4 16k;
5.https转发配置错误
正确的配置方法
server_name www.111cn.net; location /myproj/repos { set $fixed_destination $http_destination; if ( $http_destination ~* ^https(.*)$ ) { set $fixed_destination http$1; } proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Destination $fixed_destination; proxy_pass http://subversion_hosts; }
- 你们公司的出口带宽?每天网站pv uv?
带宽:100M
pv:100w
uv:5w
5.nginx动静分离配置过吗?tomcat多实例真么配置 ? expires指令含义?
nginx动静分离
配置过
最终实现效果:nginx处理静态页面,php处理动态页面
1.创建两个server块(或location块)。
2.对于静态资源(如HTML、CSS、JS、图片等),在其中一个server或location中设置根目录指向静态文件存放路径,并设置相应访问规则。
3.对于动态请求(如PHP、Java、Python等接口或页面请求),在另一个server或location中配置proxy_pass指令,将其转发至后端应用服务器地址。
4.根据请求类型(通常依据URL或扩展名判断),通过正则表达式或其他匹配规则,让Nginx区分并分别应用上述配置。
Tomcat多实例:可以不同端口号,多虚拟主机,自定义web应用访问位置 想要多实例 在编译安装一次tomcat就行,
只不过和第一个tomcat的路径不同,端口不同
Exprires:设置静态文件过期时间
expires指令含义?
用于设置HTTP响应头中的"Expires"和"Cache-Control"字段,从而控制客户端缓存(如浏览器)对静态资源的缓存策略
作用:
"expires"指令设定静态资源缓存过期时间,影响HTTP缓存策略。以此来提高用户访问速度,减少服务器负载
4.location过滤的优先级?
第一优先级:等号类型(=)的优先级最高。一旦匹配成功,则不再查找其他匹配项。
第二优先级:^~类型表达式。一旦匹配成功,则不再查找其他匹配项。
第三优先级:正则表达式类型(~ ~*)的优先级次之。如果有多个location的正则能匹配的话,则使用正则表达式
最长的那个。
第四优先级:常规字符串匹配类型。按前缀匹配。
5.nginx重定向,重写URL
URL重写有利于网站首选域的确定,对于同一资源页面多条路径的301重定向有助于URL权重的集中
rewrite
6.LVS的算法有哪几个,你们用的是哪个?
静态算法:只是根据算法进行调度并不考虑后端REALSERVER的实际连接情况
rr-论调算法,假如有两台服务器A,B,第一个请求给A,第二个给B,第三个给A依次往复
Wrr
-加权论调,假如有两台服务器A,B,A的性能是B的两倍,则在论调的同时给A上面分配的请求也大致会是B上面的两倍
动态算法:前端的调度器会根据后端REALSERVER的实际连接情况来分配请求
活动链接:当前有数据包传输
非活动链接:当前连接出于建立状态但是没有数据传输
7.NGINX有几种工作模式,都是哪几种?
master-worker模式和单进程模式
8.nginx优化怎么做的
- 使用epoll模型
- 提高进程数、打开连接数
- 启用gzip压缩传输
- 为静态文件启用缓存
- Timeouts设置
9.nginx日常参数优化? 动静分离做过吗 描述简单步骤?
gzip压缩优化 事件模型优化,文件描述符优化,防盗链,隐藏版本信息,ssl优化,http请求方法,防止ddos单ip并发连接的控制,
与连接速率控制
动静分离:server添加location模块,定义一下以什么结尾的文件不记录在日志,expires,客户端可以缓存静态数据的时间,
重启一下nginx,在次访问location定义的文件,就不写入日志了
10.nginx做了哪些优化
- 线程数
- 使用epoll模型异步非阻塞
- 压缩传输
- 缓存
- 连接超时时间
- 非法域名访问
- 防盗链
- 隐藏nginx版本信息
- 优雅页面展示
- 防止DDOS
11.网站出现500,502,400,403,404都是什么意思,怎么排查和解决
400:错误请求,服务器不理解请求的语法。这可能是用户发起的请求不合理,需要检查客户端的请求。
403:服务器拒绝请求。检查服务器配置,是不是对客户端做了限制。
12.有一web服务器,某天某用户投诉上某个网站速度很慢,如果你是服务器的管理员,请问你如何查找原因。假设服务器有任意操作系统和软件。
答:1、首先检测服务器状态,排除硬件故障和系统故障 排除机器故障
2、检查底层网络状态(包括互联情况,PING包延迟、流量情况)排除网络故障和网卡等设备故障。
3、检查WEB服务器软件运行情况(并发连接、服务软件配置情况、数据库连接情况等)排除应用服务故障。
13.实战nginx优化方面:用户访问网站如果出现404或者502页面 自动跳转打开 维护中页面 weihu.html
#修改nginx配置文件
vim /usr/local/nginx/conf/nginx.conf
#新增到域名www.it.com,server{}段中,定义维护页面:
error_page 404 502 /weihu.html;
location = /weihu.html {
}
14.你用过nginx的哪些模块
1. ngx_http_gzip_module - GZIP压缩模块
2. ngx_http_proxy_module - HTTP代理模块
3. ngx_http_rewrite_module - URL重写模块
4. ngx_http_limit_conn_module - 连接限制模块
5. ngx_http_log_module - 访问日志模块
6. ngx_upstream - 上游服务器模块(虽然它不是一个完整的模块名称,但在Nginx中,“upstream”是一个关键概念,ngx_http_upstream_module是用于定义一组后端服务器的模块,实现负载均衡和故障转移等功能)
15.nginx 状态码 499是什么意思
服务端处理时间过长,客户端主动关闭了连接
16.fastcgi和cgi有什么区别
Cgi:
web服务器接受到请求,然后根据内容,fork一个新进程,这个进程会把处理完的数据
返回给web服务器
这就是fastcgi:
web服务器收到一个请求时,他不会重新fork一个进程(因为这个进程在web
服务器启动时就开启了,而且不会退出),web服务器直接把内容传递给这个
进程,这个进程收到请求后进行处理,把结果返回给web服务器,最后自己接着
等待下一个请求的到来,而不是退出。
17.写出LVS与nginx的区别
Lvs优势:抗负载能力很强、工作稳定、无流量
Nginx:nginx工作第7层,针对是http应用本身分流,lvs没有这个功能
Nginx 对网络依赖很小,nginx安装简单也稳定,流量小于日pv 1000万 nginx足以
故障处理任务:
18.网站访问慢怎么排查 如何解决?
1 公司web 服务器 突然 挂了,或者服务器被攻击了,如何快速解决 模拟实战 可以算是个项目经验面试问道 处理过什么故障
都可以用这个
1、首先要确定是用户端还是服务端的问题。当接到用户反馈访问慢,那边自己立即访问网站看看,如果自己这边访问快,
基本断定是用户端问题,就需要耐心跟客户解释,协助客户解决问题。
2、如果访问也慢,那么可以利用浏览器的调试功能,看看加载那一项数据消耗时间过多,是图片加载慢,还是某些数据加载慢。
3、针对服务器负载情况。查看服务器硬件(网络、CPU、内存)的消耗情况。如果是购买的云主机,比如阿里云,可以登录
阿里云平台提供各方面的监控,比如 CPU、内存、带宽的使用情况。
4、如果发现硬件资源消耗都不高,那么就需要通过查日志,比如看看 MySQL慢查询的日志,看看是不是某条 SQL 语句查询慢
,导致网站访问慢。
怎么去解决?
1、如果是出口带宽问题,那么久申请加大出口带宽。
2、如果慢查询比较多,那么就要开发人员或 DBA 协助进行 SQL 语句的优化。
3、如果数据库响应慢,考虑可以加一个数据库缓存,如 Redis 等等。然后也可以搭建MySQL 主从,一台 MySQL 服务器负责写,
其他几台从数据库负责读。
4、申请购买 CDN 服务,加载用户的访问。
5、如果访问还比较慢,那就需要从整体架构上进行优化咯。做到专角色专用,多台服务器提供同一个服务
19.keepalived 脑裂怎么解决 面试和工作 会遇到
1.同时使用串行电缆和以太网电缆连接,同时用两条心跳线路,这样一条线路坏了,另一个还是好的,依然能传送心跳消息。
2.当检测到裂脑时强行关闭一个心跳节点(这个功能需特殊设备支持,如Stonith、feyce)。相当于备节点接收不到心跳消患,
通过单独的线路发送关机命令关闭主节点的电源。
3.做好对裂脑的监控报警,编写告警脚本(如邮件及手机短信等或值班).在问题发生时人为第一时间介入仲裁,降低损失。例如,
百度的监控报警短倍就有上行和下行的区别。报警消息发送到管理员手机上,
管理员可以通过手机回复对应数字或简单的字符串操作返回给服务器.让服务器根据指令自动处理相应故障,
这样解决故障的时间更短.
参考文档:https://blog.csdn.net/qq_47855463/article/details/119790396
20.简单介绍一下您所知道的减少和加速web服务器的请求的方法。
A. 针对静态的访问,做过期时间,把静态文件缓存在客户端上
B. 在前端搭建squid反向代理,把静态的文件缓存在squid上
C. 接入CDN
D. 合并js、css以及小图片
21.lvs与nginx负载均衡的区别?
1)nginx工作在网络的七层,所以他可以针对http应用本身来做分流策略,比如针对域名,目录等,而lvs并不具备
这些功能,所以nginx这点可利用的地方就多余lvs,但因为这些功能使其调整度高于lvs,需要经常触碰,触碰多了,
出问题的几率就会增加,而lvs配置性不高,没有太多的可配置选项,除了增减服务器,并不需要经常去触碰他,
大大减少人为出错。
2)nginx对网络的依赖性比较小,理论上只要能ping通,网页访问正常,nginx就能连的通,lvs比较依赖于网络环境,
至少需要一个公网ip来做VIP
3)nginx测试可以查看错误日志,而lvs出错,很多都是网络问题,没有错误日志,解决比较麻烦
4)nginx可以检测到服务器内部的故障,比如根据服务器处理网页返回的状态码、超时等等,并且会把返回错误的请求
重新提交到另一个节点。lvs的原理使其不能重发请求。比如用户正在上传一个文件,而处理该上传的节点刚 好在上传
过程中出现故障,nginx会把上传切到另一台服务器重新处理,而lvs就直接断掉了
22.apache与nginx的区别?
1)nginx 轻量级,同样web 服务,比apache 占用更少的内存及资源 抗高并发能力大约是apache的10倍以上,
nginx 处理请求是异步非阻塞的,而apache 则是阻塞型的,在高并发下nginx 能保持低资源低消耗高性能
2)nginx的静态处理性能力比apache强,nginx处理动态不行,一般动态请求要apache去做,nginx只适合静态和反向,
3)核心区别,apache是同步多进程,一个连接对应一个进程,nginx是异步的,很多很多个连接可以对应一个进程
23.Nginx和lvs负载均衡比较
1)lvs的特点:
A. 抗负载能力强,因为lvs工作方式的逻辑是非常之简单,而且工作在网络4层仅做请求分发之用,没有流量,
所以在效率上基本不需要太过考虑。在我手里的 lvs,仅仅出过一次问题:在并发最高的一小段时间内均衡器出现
丢包现象,据分析为网络问题,即网卡或linux2.4内核的承载能力已到上限,内存和 cpu方面基本无消耗。
B. 配置性低,这通常是一大劣势,但同时也是一大优势,因为没有太多可配置的选项,所以除了增减服务器,
并不需要经常去触碰它,大大减少了人为出错的几率。
C. 工作稳定,因为其本身抗负载能力很强,所以稳定性高也是顺理成章,另外各种lvs都有完整的双机热备方案,
所以一点不用担心均衡器本身会出什么问题,节点出现故障的话,lvs会自动判别,所以系统整体是非常稳定的。
D. 无流量,上面已经有所提及了。lvs仅仅分发请求,而流量并不从它本身出去,所以可以利用它这点来做一些线路
分流之用。没有流量同时也保住了均衡器的IO性能不会受到大流量的影响。
E. 基本上能支持所有应用,因为lvs工作在4层,所以它可以对几乎所有应用做负载均衡,包括http、数据库、聊天室
等等。
另:lvs也不是完全能判别节点故障的,譬如在wlc分配方式下,集群里有一个节点没有配置VIP,会使整个集群不能使
用,这时使用wrr分配方式则会丢掉一台机。目前这个问题还在进一步测试中。所以,用lvs也得多多当心为妙。
-
Nginx的特点是:
A. 工作在网络的7层之上,可以针对http应用做一些分流的策略,比如针对域名、目录结构,它的正则规则比HAProxy
更为强大和灵活,这也是它目前广泛流行的主要原因之一,Nginx单凭这点可利用的场合就远多于LVS了。
B. Nginx对网络稳定性的依赖非常小,理论上能ping通就就能进行负载功能,这个也是它的优势之一;相反LVS对网络
稳定性依赖比较大,这点本人深有体会;
C. Nginx安装和配置比较简单,测试起来比较方便,它基本能把错误用日志打印出来。LVS的配置、测试就要花比较长的
时间了,LVS对网络依赖比较大。
D. 可以承担高负载压力且稳定,在硬件不差的情况下一般能支撑几万次的并发量,负载度比LVS相对小些。
E. Nginx可以通过端口检测到服务器内部的故障,比如根据服务器处理网页返回的状态码、超时等等,并且会把返回错误
的请求重新提交到另一个节点,不过其中缺点就是不支持url来检测。比如用户正在上传一个文件,而处理该上传的节点
刚好在上传过程中出现故障,Nginx会把上传切到另一台服务器重新处理,而LVS就直接断掉了,如果是上传一个很大的
文件或者很重要的文件的话,用户可能会因此而不满。
F. Nginx不仅仅是一款优秀的负载均衡器/反向代理软件,它同时也是功能强大的Web应用服务器。LNMP也是近几年
非常流行的web架构,在高流量的环境中稳定性也很好。
G. Nginx现在作为Web反向加速缓存越来越成熟了,速度比传统的Squid服务器更快,可以考虑用其作为反向代理
加速器。
H. Nginx可作为中层反向代理使用,这一层面Nginx基本上无对手,唯一可以对比Nginx的就只有lighttpd了,
不过lighttpd目前还没有做到Nginx完全的功能,配置也不那么清晰易读,社区资料也远远没Nginx活跃。
I. Nginx也可作为静态网页和图片服务器,这方面的性能也无对手。还有Nginx社区非常活跃,第三方模块也很多。
J. Nginx新版本已经支持代理tcp各种协议,不再仅仅局限在代理http、https以及email。
24.php优化参数有哪些,fastcgi设置是多少,动态还是静态?
A. php.ini安全配置,禁掉危险的函数
disable_functions(exec,system,passthru,error_log,ini_alter,dl,openlog,syslog,readlink, symlink,link,leak,fsockopen,proc_open,popepassthru,chroot,scandir, chgrp,chown,escapeshellcmd,escapeshellarg,shell_exec,proc_get_status,popen)
B. php.ini配置日志
display_errors = 默认Off [On] 打开错误日志
error_log=/usr/local/php/logs/php_errors.log
error_reporting=E_ALL & ~E_NOTICE
C. Php.ini中定义open_basedir = /data/www:/tmp 白名单目录
D. Php-fpm.conf中配置慢执行日志
E. Php-fpm.conf定义max_children
F. 问题中的fastcgi指的就是这个fpm配置,最大进程数(max_children)为300,动态(dynamic)
TIME_WAIT: 表示收到了对方的FIN报文,并发送出了ACK报文,就等2MSL后即可回到CLOSED可用状态了。
如果FIN_WAIT_1状态下,收到了对方同时带 FIN标志和ACK标志的报文时,可以直接进入到TIME_WAIT状态,
而无须经过FIN_WAIT_2状态。
25.PHP-FPM的配置
1、进程数
pm = static // 使用方式;还有一个dynamic(动态)
pm.max_children = 300 // 静态方式下开启的php-fpm进程数量
pm.start_servers = 20 // 动态方式下的起始php-fpm进程数量
pm.min_spare_servers = 5 // 动态方式下的最小php-fpm进程数
pm.max_spare_servers = 30 // 动态方式下的最大php-fpm进程数量
关于选择静态还是动态
对于内存大的服务器(比如8G以上)来说,指定静态的max_children实际上更为妥当,因为这样不需要进行额外的进程数目控制,会提高效率。
对于小内存的服务器来说,比如256M内存的VPS,选择动态比较好,因为动态方式会结束掉多余的进程,可以回收释放一些内存,所以推荐在内存较少的服务器或VPS上使用。具体最大数量根据 内存/20M 得到。
2、最大处理请求数
pm.max_requests = 10240
最大处理请求数是指一个php-fpm的worker进程在处理多少个请求后就终止掉,master进程会重新respawn一个新的。
这个配置的主要目的是避免php解释器或程序引用的第三方库造成的内存泄露。
3、最长执行时间
request_terminate_timeout = 30
最大执行时间在php.ini和php-fpm.conf里都可以配置,配置项分别为max_execution_time和request_terminate_timeout。
这两项都是用来配置一个PHP脚本的最大执行时间的。当超过这个时间时,PHP-FPM不只会终止脚本的执行,
还会终止执行脚本的Worker进程。所以Nginx会发现与自己通信的连接断掉了,就会返回给客户端502错误。
其作用及其影响参见:Nginx中502和504错误详解
以上就是PHP-FPM配置文件的一些参数优化了
TIME_WAIT: 表示收到了对方的FIN报文,并发送出了ACK报文,就等2MSL后即可回到CLOSED可用状态了。
如果FIN_WAIT_1状态下,收到了对方同时带 FIN标志和ACK标志的报文时,可以直接进入到TIME_WAIT状态,
而无须经过FIN_WAIT_2状态。
可参考优化文档:https://www.jianshu.com/p/711f376b74e6
26.Nginx优化:
一.优化Nginx并发量
[root@proxy ~]# ab -n 2000 -c 2000 http://192.168.4.5/
Benchmarking 192.168.4.5 (be patient)
socket: Too many open files (24) //提示打开文件数量过多
#修改Nginx配置文件,增加并发量
[root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf
.. ..
worker_processes 2; //与CPU核心数量一致
events {
worker_connections 65535; //每个worker最大并发连接数
use epoll;
}
.. ..
[root@proxy ~]# nginx -s reload
二.优化Linux内核参数(最大文件数量)
[root@proxy ~]# ulimit -a //查看所有属性值
[root@proxy ~]# ulimit -Hn 100000 //设置硬限制(临时规则)
[root@proxy ~]# ulimit -Sn 100000 //设置软限制(临时规则)
[root@proxy ~]# vim /etc/security/limits.conf
.. ..
* soft nofile 100000
* hard nofile 100000
#该配置文件分4列,分别如下:
#用户或组 硬限制或软限制 需要限制的项目 限制的值
优化后测试服务器并发量
[root@proxy ~]# ab -n 2000 -c 2000 http://192.168.4.5/
三.优化Nginx数据包头缓存
[root@proxy ~]# cat lnmp_soft/buffer.sh
#!/bin/bash
URL=http://192.168.4.5/index.html?
for i in {1..5000}
do
URL=${URL}v$i=$i
done
curl $URL //经过5000次循环后,生成一个长的URL地址栏
[root@proxy ~]# ./buffer.sh
.. ..
<center><h1>414 Request-URI Too Large</h1></center> //提示头部信息过大
修改Nginx配置文件,增加数据包头部缓存大小
[root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf
.. ..
http {
client_header_buffer_size 1k; //默认请求包头信息的缓存
large_client_header_buffers 4 4k; //大请求包头部信息的缓存个数与容量
.. ..
}
[root@proxy ~]# nginx -s reload
四.对页面进行压缩处理
[root@proxy ~]# cat /usr/local/nginx/conf/nginx.conf
http {
.. ..
gzip on; //开启压缩
gzip_min_length 1000; //小文件不压缩
gzip_comp_level 4; //压缩比率
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
//对特定文件压缩,类型参考mime.types
.. ..
五.服务器内存缓存
http {
open_file_cache max=2000 inactive=20s;
open_file_cache_valid 60s;
open_file_cache_min_uses 5;
open_file_cache_errors off;
//设置服务器最大缓存2000个文件句柄,关闭20秒内无请求的文件句柄
//文件句柄的有效时间是60秒,60秒后过期
//只有访问次数超过5次会被缓存
}
http {
open_file_cache max=2000 inactive=20s;
open_file_cache_valid 60s;
open_file_cache_min_uses 5;
open_file_cache_errors off;
//设置服务器最大缓存2000个文件句柄,关闭20秒内无请求的文件句柄
//文件句柄的有效时间是60秒,60秒后过期
//只有访问次数超过5次会被缓存
}
六.浏览器本地缓存静态数据
[root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
location ~* \.(jpg|jpeg|gif|png|css|js|ico|xml)$ {
expires 30d; //定义客户端缓存时间为30天
}
}
[root@proxy ~]# cp /usr/share/backgrounds/day.jpg /usr/local/nginx/html
[root@proxy ~]# nginx -s reload
27.nginx 负载怎么做的:
就是 在http 模块里面 配置 upsteam模块在配置proxy_pass 反向代理 实现均衡的
28.nginx 可以做什么 ?
反向代理 负载均衡 动静分离
29.nginx 负载均衡的策略
分为2个类 1 内置策略和扩展策略
内置策略 有轮训 权重 ip hash
30.nginx 主备 怎么区分?
看日志 或者 看 vip在哪
31.主故障了 从接手了 然后主恢复了 流量怎么走?
vip 在哪 流量就在哪
32.nginx 均衡 权重缺点?
不够平均,可能造成服务器 压力增大
33.nginx 反向代理怎么做的
就是一个 server 模块 使用 proxy_pass 实现代理
34.也是问的nginx,nginx负载均衡具体需要配置哪些东西,写出来?
就是 在http 模块里面 配置 upsteam模块在配置proxy_pass 反向代理 实现均衡的
mysql导出导入,导出表,导出表结构。怎么操作
mysqldump -uroot -p test test | gzip >1.sql.gz
导出表结构
mysqldump -uroot -pdbpasswd -d dbname test>db.sql;
35.mysql主从怎么实现,需要具体配置哪些东西,写出来
暂定业务-数据库备份-恢复到从库
主库开启binlog日志 ,开启i/0线程 设置授权账户 记录数据库状态 支持sql同步
show slave status\G 检查主从状态 2个yes 就是ok
37.一个脚本随开机启动,除了放rc.loac还可以放哪里?
/etc/inittab 也可以实现
38.如果一个服务器很卡,你怎么排查 ?
首先看看系统负载情况 和 连接状态 ,然后找到异常进程 看看对应服务的日志
39.top命令cpu那一栏分别代表的什么意思 ?
cpu 总体信息 进程占用%比 内核占用%比 空闲cpu 等待i/0
40.nginx 的vip是怎么确定的,具体需要怎么配置来实现他
使用keepalived 配置虚拟vip
41.keppalive是什么,他的核心功能是什么?
高可用软件 核心功能就是 故障切换 实现ip 自动漂移 保障业务不宕机
42.Keepalived工作原理谈谈?
Keepalived故障切换转移,是通过VRRP(虚拟路由冗余协议)来实现的。
在Keepalived服务正常工作时,主master节点会不断的向备节点发送心跳信息,用来告诉备Backup节点自己还活着,
当主master节点发生故障时候,就无法发送心跳信息了,备节点也就因此无法继续检测到来自主 Master节点的心跳了,
于是调用自身的接管程序,接管主Master节点的 IP资源及服务。而当主 Master节点恢复时,备Backup节点又会释放IP资源及服务,恢复到原来的备用角色。
43.nginx有什么特殊配置,如轮询方式,反向代理加的特殊参数 ?
加一些
max_fails=5 fail_timeout=10s; 失败次数 时间间隔
proxy_set_header Host $host; 不加host字段 均衡就会找不到资源
44.nginx做过哪些配置?
反向代理 proxy_pass
负载均衡 upstread
动静分离 (proxy_pass/upstream)
nginx rewrite地址重写
location匹配
访问限制 limit_conn_module、limit_req_module
45.nginx状态码,如500什么问题502能具体说一下是什么吗这两个?
500 一般内部错误 我经常遇到都是数据库连接
502 一般网关问题 基本都是后端出现异常,就看下 后端服务的日志