# 面试稳了

面试稳了：<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 改成一个时间
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://close.gitbook.io/yun-wei-bi-ji/go/mian-shi/mian-shi-wen-le.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
