# 面试稳了

面试稳了：https://blog.csdn.net/FL63Zv9Zou86950w/article/details/104284671

https://mp.weixin.qq.com/s?\_\_biz=MzAwNTM5Njk3Mw==\&mid=2247502074\&idx=1\&sn=04a46ef461b8057bbf08dfd65772f44b\&chksm=9b1fc878ac68416ea120bba2e8359cbe9e1b1c6ca36a2b6d3daba43ff03b8b1da3db84fa5df2\&mpshare=1\&scene=23\&srcid=0701rTsAgurEEQw511CwoIUZ\&sharer\_sharetime=1625112309767\&sharer\_shareid=cda3fd6d851917b1a68b5e6c75210072#rd

### 1. 误操作 drop 导致数据库数据丢失，如何恢复？

* (1) 首先查看备份和binlog文件
* (2) 刷新并备份binlog文件;

```sql
mysqladmin -uroot -p123456 -S /data/mysql.sock flush-logs
```

* (3) 将binlog文件恢复成sql语句,将其中误操作的语句删除（就是drop的动作）

```sql
mysqlbinlog –no-defaults mysql-bin.000061 mysql-bin.000062 >bin.sql
```

* (4) 解压全备文件，恢复全备文件;

```sql
gzip -d mysql_backup_2019-11-12.sql.gz
mysql -uroot -pmysql123 -S /data/3306/mysql.sock < mysql_backup_2019-11-12.sql  # (如果有对表的操作，恢复数据时需要接表名)
```

* (5)恢复误操作前的binlog文件记录的sql语句

```sql
mysql -uroot -pmysql123 -S/data/3306/mysql.sock < bin.sql
```

* (6) 最后登陆数据库，查看数据是否恢复成功，如果有确定的误操作时间，就直接恢复这段时间的数据即可。

### 2. 网站访问速度过慢,如何排查，并且如何解决?

#### 响应时间、

> **如何排查？** ping 检查域名解析时间 如果出现丢包，说明线路异常 如果禁Ping，使用 tcping 测试端口
>
> 解决办法： CDN加速，如果是线路短暂的不稳定，可等待线路调整，条件允许的话，切换其他运营商线路

#### 执行时间、

> **如何排查？** 在网络无问题的情况下，就需要查看服务器内部资源使用情况，如CPU，内存，磁盘IOPS，带宽 **解决办法**： 对服务器资源进行升级
>
> 大多数情况是数据库导致反应慢，那就检查数据库和主机使用的网络是否有问题，如果是公网，最好是同机房 其次分析下慢日志，查看正在执行的查询语句是哪个耗时时间长。 **解决办法**： 硬件方面，升级SSD固态硬盘，软方便，建立索引，牺牲部分空间换取时间

#### 加载时间、

> **如何排查？** 借助浏览器 F12 开发模式，关闭缓存，观察个个加载项的时间，如果时间特别长加载不出来就有问题了 一般分为几点：
>
> * 网站中的坏链，404地址，会导致持续加载不出
> * 外链地址： 调用的外部网站地址，加载外链很慢导致网站整体加载慢
> * 大文件： 会直接导致访问慢。
>
> **解决办法：**
>
> *
>   1. 定期检查网站加载项，删除修复其中的坏链，外链建议修改成程序本地调用，减少加载项数量(截图中的requests项)
> *
>   2. 压缩网站首页大小，首页越小越好，这样能同时间承受更大的访问量，访问速度也更快
> *
>   3. 提升服务器带宽

### 3. 磁盘空间满了,删除了一部分日志内容,可发现磁盘空间还是满的,为什么？

> 在Linux或者Unix系统中,如果文件被删除了，但是磁盘未释放，那说明这个文件被某一个进程使用中，所以磁盘未释放

### 4. 描述MySQL主从复制原理

* 首先从库会生成两个线程（I/O线程 && SQL线程），I/O线程去请求主库的Binlog，并将Binlog日志写的 relay log(中继日志)
* 其次主库会生成一个 log dump 线程，用来给从库 I/O 线程传Binlog
* 最后 SQL线程会读取中继文件中的日本，并解析成具体操作，写入从库，保证主从操作一样，实现数据一致

### 5. Apache服务的常用工作模式及对应的特点

* worker模式： 线程模式，占用资源少，并发大，相对稳定性差
* prefork模式： 进程模式，占用资源多，稳定好，并发一般

### 6. 如何查看某个进程所打开的所有文件

```bash
lsof -c xxx进程
```

### 7. 说说常用的网络管理工具

```bash
ifconfig, ping, traceroute, dig, nslookup ,telnet
```

### 8.开机启动流程

* 开机Blos自检，加载硬盘
* 主引导记录，加载内核
* 启动初始化进程，确定运行级别
* 加载开机启动程序，进入系统登陆界面

### Nginx+Php502 错误排查，例如 Php

#### 检查FastCGI进程是否已经启动

#### FastCGI worker进程是否不够

```bash
# 判断接近配置文件中设置的进程数值，如果接近，表明worker进程数设置太少
netstat -anpo | grep “php-cgi” | wc -l 
```

#### FastCGI 执行时间过长

```bash
# 根据实际情况调高以下参数值
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
```

#### FastCGI Buffer 不够

```bash
# nginx和apache一样，有前端缓冲限制，可以调整缓冲参数
fastcgi_buffer_size 32k;
fastcgi_buffers 8 32k;
```

#### Proxy Buffer 不够

```bash
# 如果你用了Proxying，调整
proxy_buffer_size   16k;
proxy_buffers 4 16k;
```

#### php脚本执行时间过长

```bash
将php-fpm.conf的 0s的 0s 改成一个时间
```
