**1. 一切問題先檢查客戶端、`swoole_tracker`擴展、服務端版本是否一致,是否為最新發布版本;
2. 客戶端Agent服務是否啟動;
3. 安裝擴展完成以后是否重啟客戶端 Server 服務或 php-fpm 服務;**
>[success] swoole_tracker擴展的發布版本可能會出現比客戶端、服務端高,這個不影響。
* 查看客戶端版本 `ps -ef | grep agent`

* 查看 `swoole_tracker`?擴展版本
```ini
;php.ini不要忘了添加
extension=swoole_tracker.so
apm.enable=1
apm.sampling_rate=100
```
>[info] cli模式?php --ri swoole_tracker

>[success] fpm模式 phpinfo()

* 查看服務端版本

[TOC]
## 1. 找不到對應應用
* 查看項目是否正確,自動創建的應用會放到默認項目中
* 檢查該應用是否存在合并應用或應用黑名單中
* 檢查客戶端`swoole_tracker`?配置是否正確,參考安裝說明->客戶端
* 檢查客戶端是否給該服務端上報
## 2. 調用統計/鏈路追蹤無信息
* 檢查對應后臺地址(IP或域名)是否正確,防火墻、安全組中端口是否開放
>[danger] 請開放出入端口:**9903,9904,9907,9981,9990,8995,9666**
* 檢查客戶端進程是否存在
* 檢查客戶端`swoole_tracker`配置是否正確,參考安裝說明->客戶端
* 存在臟數據緩存,等待5-10分鐘(之前邏輯為客戶端上報的時候會創建文件緩存,每五分鐘刪除一次,重新安裝服務端后客戶端文件緩存未刪除,出現臟數據緩存,導致短時間內無法上報,現已將緩存寫入內存中,重裝服務端后重啟服務端fpm和重啟swoole-admin服務就能正常接收數據,無需等待)
* 檢查采樣率`apm.sampling_rate`
* 檢查配置項`apm.agent_host`是否正確,為本地agent的ip,可不設置。
## 3. Service應用無調用統計、鏈路追蹤信息
* 檢查服務名是否存在于服務端
* 檢查代碼使用是否正確,參考安裝說明->上報監控數據
* 檢查客戶端服務名和服務端創建是否一致
* 同問題2
## 4. 管理NodeAgent守護進程
目前NodeAgent采用系統的守護進程管理,如果要管理NodeAgent的狀態:
* 對于采用openrc和類似sysvinit的系統(如Debian 7 "Wheezy", Ubuntu 14.04 "Trusty"(默認不安裝systemd), CentOS(RHEL) 6, Fedora 14, Gentoo(可選), Archlinux(可選), Alpine Linux)使用命令
```bash
/etc/init.d/node-agent start
/etc/init.d/node-agent stop
/etc/init.d/node-agent restart
```
來啟動/停止/重啟NodeAgent(非root用戶需要sudo)
* 對于采用systemd的系統(Debian 8 "Jessie"及以后, Ubuntu 15.04 "Vivid"及以后, CentOS(RHEL) 7及以后, Fedora 15及以后, Gentoo(可選), Archlinux(可選))使用命令
```bash
systemctl start node-agent
systemctl stop node-agent
systemctl restart node-agent
```
來啟動/停止/重啟NodeAgent(非root用戶需要sudo)
## 5. 增加調試器中的相關代碼后報錯: Fatal error: Uncaught Exception: plz set apm.enable_memcheck=1 which in php.ini
解決方法:在 `php.ini`?中添加配置:?`apm.enable_memcheck=1`
>[info] 從2.3.3版本以后默認關閉調試功能,需要手動進行配置。或者使用遠程調試
## 6. 重裝服務端并清空數據庫后,沒有上報信息等情況
從2.3.3版本開始有部分信息緩存在php內存中,服務端重裝后,數據對應不上導致部分數據獲取失敗,所以客戶端需要重啟fpm進程
## 7. 機器信息無上報信息
1. 檢查網絡是否通暢
2. 查看客戶端日志 `/opt/swoole/logs/NodeAgent-sysinfoerr.log`?是否存在,存在查看內容,是否有上報失敗字樣
3. 服務端地址是否正確
## 8. 進程列表無信息
1. 查看客戶端node-agent進程是否存在
2. 查看客戶端本地是否有pid文件,路徑:`/var/run/swoole_tracker/`下的cli和fpm文件夾中
3. pid文件對應的進程是否正常
## 9. 加載擴展后報錯`undefined symbol: php_pdo_get_exception`
擴展需要放在pdo擴展后面加載。使用`php --ini | grep "Scan for additional .ini files in:"`查看第三方加載目錄,在此目錄中創建一個`swoole_tracker`的配置

## 10. 加載擴展后報錯`undefined symbol: compiler_globals in Unknown`
擴展支持`nts`非線程安全版本PHP,可使用命令`php -v`查看

## 11. 客戶端運行報錯 sw_get_entrypoint():ERROR:mkdir error, make sure that start the agent first (Premission denied).
請使用 root 用戶啟動 Agent服務,沒有啟動 Agent 服務并且不是使用 root 用戶啟動時會報這個錯誤
## 12. 業務開啟進程數較多或動態調整進程數模式,導致客戶端agent的worker進程占用cpu過高
解決方法是優化業務的最低進程數;或者合理修改客戶端agent的worker進程數,修改[配置文件](./installation/client/user-config.md)中的`system_worker_num`
## 13. 以上的2、3、7、8問題查看后依舊無信息
如果你將服務單獨使用Docker(單獨的NodeAgent容器)進行部署的,需要檢測對應的網絡連接是否通暢,即檢查是否在同一網段內。
可使用`telnet`等工具測試上文中的對應端口。
## 14. Agent列表的某個機器為紅色
先查看Agent連接是否正常,如果正常請檢查該機器的系統時間是否正常。
## 15. 報錯:PHP Startup: apm.enable and apm.enable_malloc_hook can't be turned on together, reset apm.enable=0
開啟了`apm.enable_malloc_hook =1`之后其他的功能均不可用,只能進行內存泄漏檢測。