美文网首页
面试常问

面试常问

作者: 魔曦帝天 | 来源:发表于2019-12-17 08:56 被阅读0次

    PV于UV的区别

    UV: 访问网站的一台电脑客户端为一个访客,一天内同一客户端访问多次只被计算一次
    PV: 每个网页的每一次访问被记录为一个PV
    
    1.mysql主从同步延迟怎么解决?
    2.如何查看网络?
    5.http和https的区别?优缺点?
    6.tsl和ssl的区别?在那层?
    7.NFS的特点
    8.raid磁盘阵列?
    9.怎么解决k8s的网络通信问题?
    10.rabbitmq的特点?
    11.rabbitmq的消峰?
    3.在三次握手中出现大量time_wait状态,并发量高才会出现,如何解决?
    4.如果web页面访问慢怎么办?如何解决?
    

    如果web页面访问慢怎么办?如何解决?

    带宽不足,
    首先想到的就是自己网速的问题,但是一般网速在1M以上的,打开网页一般不会是很慢的。
    网站服务器的带宽不够的话,当大量用户访问的时候,网页的加载也是很慢的,这就是网络的出口端和入口端两个方面
    
    硬件配置低,
    服务器端的配置
    CPU或者是内存被占满的时候
    
    
    DNS解析慢,
    域名的解析是需要专门的域名解析服务器来完成的,DNS解析包括往复解析的次数及每次解析所花费的时间,它们两者的积即是DNS解析所耗费的总时间,在http请求的过程中,域名解析和建立连接占的时间很多。
    
    JS阻塞请求,
    写的js代码出现问题,解析就会花费很长时间,这两个js请求之间会出现一个很大的空隙,就会导致这段时间的资源加载都被阻塞住,
    
    接受数据时间过长,
    这种情况一般是因为下载的内容太重了,例如大图片、大脚本等。
    这类问题可以使用GZIP压缩、图片压缩或者JS/CSS的minify等手段来解决。
    
    加载某个资源太慢
    如果某个请求比其他的请求多出很多的时间,那么一般情况就是某个资源的加载太慢,导致了整个网页变慢,
    原因有可能是1)资源在第三方站点上,他们很慢;2)这个资源太大了;3)这个资源使用的域名有问题
    
    后端代码问题,
    主要有代码冗余、数据库发生锁死、动态请求时间过长等,
    
    前端页面请求的资源过多
    
    网页本身中包含了追踪或者是分析用户的工具,从而导致网页的加载时间变的慢
    
    

    在三次握手中出现大量time_wait状态,如何解决?
    查看tcp连接状态

    netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'    
    

    编辑文件/etc/sysctl.conf,加入以下内容:

    net.ipv4.tcp_syncookies = 1 表示开启SYN cookies。
    当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭
    
    net.ipv4.tcp_tw_reuse = 1 表示开启重用。
    允许将TIME-WAIT sockets重新用于新的TCP连接,
    默认为0,表示关闭
    
    net.ipv4.tcp_tw_recycle = 1 
    开启TCP连接中TIME-WAIT sockets的快速回收,
    默认为0,表示关闭。
    
    net.ipv4.tcp_fin_timeout =30
    tcp_fin_timeout实为FIN_WAIT_2状态的时长,
    

    然后执行 /sbin/sysctl -p让参数生效。

    关于修改linux的tcp连接中的TIME_OUT时间

    Linux默认的TIME_WAIT时长一般是60秒
    Linux没有提供修改TIME_WAIT时长接口,但windows注册表(TcpTimedWaitDelay)可以修改

    Syn Cookie

    它的原理是,在TCP服务器接收到TCP SYN包并返回TCP SYN + ACK包时,不分配一个专门的数据区,被动端(TCP服务器)根据这个SYN包计算出一个cookie值。这个cookie作为将要返回的SYN ACK包的初始序列号。
    当客户端返回一个ACK包时,根据包头信息计算cookie,与返回的确认序列号(初始序列号 + 1)进行对比,如果相同,则是一个正常连接,然后,分配资源,建立连接。

    为什么有监控?

    它能够让运维人员快速知晓系统的运行状况,
    并在出现问题时甚至在出现问题前,
    及时感知到问题的存在,
    通过提前处理或实施预案,解决或避免问题的出现,并且尽快进行处理。
    

    为什么使用zabbix?

    zabbix是C语言写的(4.4用go重写),web界面是php写的
    Zabbix
    一个合格的监控系统需要提供一定的深度监控:可用性监控,性能监控,甚至是日志监控。
    ZABBIX可以通过JAVA GATEWAY进行原生的应用级监控,包括JVM的状态,连接数等。对于其他的中间件和数据库,也有相应的模版可供使用。

    对于操作系统,ZABBIX官方也提供了一些模版,对常见的Windows,Linux等操作系统进行监控。其中也包含了很多如磁盘IO的性能监控项

    通过SNMP协议,ZABBIX可以对交换机存储的性能及可用性进行监控。
    SNMP是一种简单网络管理协议,它属于TCP/IP五层协议中的应用层协议
    详细参考

    ZABBIX可以对底层的硬件进行监控,可以通过IPMI带外协议监控每个磁盘、每个内存、每个CPU的状态,甚至是某个风扇的转速。

    image.png
    开源性:源代码全公开,任何用户都可以编译和发布自己的版本。同时,ZABBIX社区中有大量的模版。
    
    可扩展性:支持用户自定义监控项,只要能想得到的KPI,基本都能监控的到。
    

    分布式
    分布式架构,提供多分支组织的IT监控解决方案。同时,也一定程度上分散监控压力。

    支持通过代理服务器zabbix proxy收集zabbix agent的数据,
    然后把收集保存在本地数据库并发送给zabbix server进行统一存储和展示
    

    zabbix分布式配置

    为什么使用zabbix?总结

    开源性:源代码全公开,任何用户都可以编译和发布自己的版本。
    ZABBIX社区中有大量的模版。
    

    zabbix的优化?
    官网性能调优

    如何做全链路监控?

    相关文章

      网友评论

          本文标题:面试常问

          本文链接:https://www.haomeiwen.com/subject/yrmdnctx.html