worker在未启动完成时异常退出，master不会再次拉起worker进程
<!--
如果你是新手，请务必仔细阅读：[如何正确的提出一个 Issue](https://github.com/eggjs/egg/issues/3310)。
感谢您向我们反馈问题，为了高效的解决问题，我们期望你能提供以下信息：
-->

## What happens?
<!-- 清晰的描述下遇到的问题。-->
某些场景下worker进程退出后，不会被master进程拉起来

## 最小可复现仓库
> 请使用 `npm init egg --type=simple bug` 创建，并上传到你的 GitHub 仓库

<!-- https://github.com/YOUR_REPOSITORY_URL -->

## 复现步骤，错误日志以及相关配置

<!-- 请提供复现步骤，错误日志以及相关配置 -->
<!-- 可以尝试不要锁版本，重新安装依赖试试先 -->
### 复现步骤
1. 启动egg工程，设置worker个数为2，等待worker完全启动并且工作正常
2. kill -15其中一个worker进程，
   此时master会检测到worker进程退出，并且会重新启动worker进程
  通过某些条件构造worker此时不能启动(master不会收到app-start事件)成功异常退出(题主的场景是mysql连不上，此时会导致worker 报错退出)
3. 后面worker的进程数会一直维持为一个，即使worker此时能启动成功(譬如mysql恢复正常了)

### 问题原因
1. master在收到worker的diconnect和exit事件后，是否需要重启worker进程时，master会检查worker的disableRefork属性，此属性为true时，表示不需要重新fork，也就不会重启worker进程
2. 搜索disableRefork关键字，发现在cluster fork完worker进程后，会将disableRefork置为**true**
![image](https://user-images.githubusercontent.com/13324652/101774784-8837fa80-3b29-11eb-8101-e984d34a562e.png)
在master收到**app-start**事件后，会将disableRefork置为**false**(前提是所有worker都起来过，复现步骤第一步已经保证，this.isAllAppWorkerStarted为真)
![image](https://user-images.githubusercontent.com/13324652/101774852-9a199d80-3b29-11eb-84fb-72c7d9418658.png)
cfork在判断是否需要重启worker时，会检查**disableRefork**属性
![image](https://user-images.githubusercontent.com/13324652/101775119-f977ad80-3b29-11eb-8f56-3e3aa04e99ba.png)

3. 在复现步骤的第二步worker被杀死后，重新启动时，由于没有启动成功导致master没有收到**app-start**事件，从而导致disableRefork为**true**，从而导致master收到worker退出的disconnect或者exit事件，也不会重启worker，从而导致worker个数不对


## 相关环境信息
- **操作系统**：
 centos8 
- **Node 版本**：
v12.13.1
- **Egg 版本**：
"egg": "2.10.0"
