第一题:请问当用户反馈网站访问慢,您将如何处理?
答:
首先,有许多方面的因素会导致网站网站访问慢,我大概列出常见的,如下
1)服务器出口带宽不够用
解释:
* 本身服务器购买的出口带宽比较小,一旦并发量大的话,就会造成分给每个用户的出口带宽就小咯,访问速度自然就会慢咯
* 跨运营商网络导致带宽缩减。例如公司网站放在电信的网络上,那么客户这边对接是长城宽带或联通,这也可能导致带宽的缩减
2) 服务器负载过大,导致响应不过来。
解释:
* 查看cpu和内存的使用情况,如果使用率比较高,就需要查看是否有恶意程序在运行,通过ps和top命令,看看有没有异常进程,如果没有,则需要申请升级服务器配置或者额外再加一台web服务器,前端加负载均衡设备进行调度。
3)数据库瓶颈
4)网站开发代码没有优化好,例如SQL语句没有优化,导致数据库读写相当耗时
针对网站访问慢,有哪些工具去检测:
1)首先要确定是用户端还是服务端的问题;当接到用户反馈访问慢,那边自己立即访问网站看看,如果自己这边访问快,基本断定是用户端问题,就需要耐心跟客户解释咯,协助客户解决问题
2)如果访问也慢,那么可以利用浏览器的调试功能,看看加载那一项数据消耗时间过多,是图片加载慢,还是某些数据加载慢
3)针对服务器负载情况。查看服务器硬件(网络、cpu、内存)的消耗情况。如果是购买的云主机,比如阿里云,可以登录阿里云平台提供各方面的监控,比如cpu,内存,带宽的使用情况
4)如果发现硬件资源消耗都不高,那么就需要通过查日志,比如看看mysql慢查询的日志,看看是不是某条sql语句查询慢,导致网站访问慢
解决办法:
1)如果是出口带宽问题,那么久申请加大出口带宽
2)如果慢查询比较多,那么就要开发人员或DBA协助进行SQL语句的优化
3)如果数据库响应慢,考虑可以加一个数据库缓存,如redis等。然后也可以搭建mysql主从,一台mysql服务器负责写,其他几台从数据库负责读
4)申请购买CDN服务,加载用户的访问
5)如果访问还比较慢,那就需要从整体架构上进行优化咯。做到专角色专用,多台服务器提供同一个服务。
第二题:xtrabackup备份原理
答:
由于xtrabackup只能备份innodb表,由于目前环境中,有些系统表还是使用MyISAM存储引擎,但是xtrabackup又不支持,因为我们会使用innobackupex这个命令来备份,其备份过程如下
1)innobackupex启动备份后,被先fork一个进程,启动xtrabackup进程
2)xtrabackup备份innodb存储引擎的文件,在备份相关数据,会启动2个线程
第一个是:redo拷贝线程,负责拷贝redo日志
第二个是:ibd拷贝线程,负责拷贝ibd文件
redo 拷贝线程只有一个,在 ibd 拷贝线程之前启动,在 ibd 线程结束后结束
3)xtrabackup拷贝完ibd文件后,通知innobackupex(通过创建文件的方式),同时自己处于等待状态(redo线程还在继续拷贝)
4)innobackupex收到xtrabackup通知后,执行flush table with read lock,然后开始备份非innodb文件(如frm,MYI,MYD等)
5)当innodb拷贝完所有非innodb表文件后,通知xtrabackup(通过删除文件),同时自己处于等待(等待另一个文件创建)
6) xtrabackup收到innobackupex备份完非innodb通知后,就停止redo拷贝线程,通知innobackupex(通过创建文件)
7)innobackupex收到redo备份完成通知后,执行unlock tables
8) 最后 innobackupex 和 xtrabackup 进程各自完成收尾工作,如资源的释放、写备份元数据信息等,innobackupex 等待 xtrabackup 子进程结束后退出。