摘要:一什么是預(yù)警預(yù)警可以理解成我們?nèi)粘I钪械捏w檢,每個(gè)人不管是富貴,還是貧窮,有一個(gè)健康的身體才是事業(yè)和生活的基礎(chǔ)。
一、什么是預(yù)警?
預(yù)警可以理解成我們?nèi)粘I钪械捏w檢,每個(gè)人不管是富貴,還是貧窮,有一個(gè)健康的身體才是事業(yè)和生活的基礎(chǔ)。
項(xiàng)目的健康我們形象比喻成“1”,項(xiàng)目的N多子功能/子模塊,比如登錄模塊、注冊(cè)模塊等都是“1”后面的“0”,如果項(xiàng)目都出問題了(比如 Http Status Code 502, 頁面或者接口響應(yīng)慢),相當(dāng)于前面的“1”已經(jīng)不存在了,即使后面再多的“0”也沒有任何意義。
二、預(yù)警能起到什么作用?從醫(yī)學(xué)的名詞來表述,包括了三個(gè)方面:
治未病
早發(fā)現(xiàn),早治療
確診了,馬上治療
三、Asf 預(yù)警解決方案關(guān)于 Asf 框架的入門教程,請(qǐng)看這里 >>> Get Start
關(guān)于 Asf 框架支持的配置項(xiàng)及配置詳情,請(qǐng)看這里 >>> Get Start
Asf PHP擴(kuò)展框架已經(jīng)內(nèi)置了一套預(yù)警機(jī)制,預(yù)警范圍包括了兩個(gè)方面,每一個(gè)方面又包括兩種不同的預(yù)警處理方法。
PHP腳本執(zhí)行異常預(yù)警
Fatal Error | Warning | Notice | Strict | Deprecated | Unknown Error |
---|---|---|---|---|---|
E_PARSE | E_WARNING | E_NOTICE | E_STRICT | E_DEPRECATED | E_OTHERS |
E_ERROR | E_USER_WARNING | E_USER_NOTICE | - | - | - |
E_CORE_ERROR | E_CORE_WARNING | - | - | - | - |
E_COMPILE_ERROR | E_COMPILE_WARNING | - | - | - | - |
E_USER_ERROR | E_RECOVERABLE_ERROR | - | - | - | - |
PHP腳本執(zhí)行時(shí)間耗時(shí)預(yù)警 (非CLI模式下)
配置項(xiàng) | 類型 | 默認(rèn)值 (秒) | 含義 |
---|---|---|---|
asf.dispathcer.timeout.max_script_time | double | 1.0 | 腳本超時(shí)預(yù)警 |
asf.dispathcer.timeout.max_db_time | double | 0.1 | SQL超時(shí)預(yù)警 |
asf.dispathcer.timeout.max_cache_time | double | 0.1 | NoSQL超時(shí)預(yù)警 |
asf.dispathcer.timeout.max_curl_time | double | 0.1 | CURL超時(shí)預(yù)警 |
本地日志記錄方案,支持 Log Buffer,性能指標(biāo)請(qǐng)看這里 >>> Get Start
4.1 PHP腳本執(zhí)行異常預(yù)警日志格式規(guī)范請(qǐng)參考這里 >>> Get Start
[dongshuang@box3 /data/www/box3.cn/public]$ cat index.php array( "root_path" => dirname(__DIR__) . "/apps", "log_path" => "/data/logs", /* 日志保存目錄,寫入權(quán)限 */ "dispatcher" => [ "log" => ["err" => 1] /* 開啟 */ ] ) ); $app = new App($configs); $app->run();4.1.1 /data/logs/Asf_Err_Log 樣本
[dongshuang@box3 /data/logs]$ tailf Asf_Err_Log 2019-02-22 16:01:11 Asia/Shanghai | NOTICE | 28984 | Notice: Undefined variable: b in /data/www/box3.cn/apps/Bootstrap.php on line 21 2019-02-22 16:01:11 Asia/Shanghai | WARNING | 31486 | Warning: include(test.php): failed to open stream: No such file or directory in /data/www/box3.cn/apps/Bootstrap.php on line 20 2019-02-22 16:02:24 Asia/Shanghai | ERROR | 4137 | Fatal Error: AsfApplication::run() No method listaaction in DeviceService in /data/www/box3.cn/public/index.php on line 23 Stack trace: ## settled_uri = /v1/device/lista #0 /data/www/box3.cn/public/index.php(23): AsfApplication->run() #1 {main}4.2 PHP腳本執(zhí)行時(shí)間耗時(shí)預(yù)警
[dongshuang@box3 /data/www/box3.cn/public]$ cat index.php array( "root_path" => dirname(__DIR__) . "/apps", "log_path" => "/data/logs", /* 日志保存目錄,寫入權(quán)限 */ "dispatcher" => [ "log" => ["timeout" => 1] /* 開啟 */ ] ) ); $app = new App($configs); $app->run();4.2.1 /data/logs/Asf_Timeout_Log 樣本
[dongshuang@box3 /data/logs]$ tailf Asf_Timeout_Log 2019-02-25 09:06:48 UTC | INFO | 26026 | 127.0.0.1:6379 Redis::set(110) executing too slow 0.201406 sec 2019-02-25 09:06:48 UTC | INFO | 26026 | 127.0.0.1:6379 Redis::get(111) executing too slow 0.201349 sec 2019-02-25 09:06:48 UTC | INFO | 26026 | /index/redis executing too slow 1.008510 sec五、函數(shù)回調(diào)(callable)方案 Demo 5.1 PHP腳本執(zhí)行異常預(yù)警
[dongshuang@box3 /data/www/box3.cn/public]$ cat index.php array( "root_path" => dirname(__DIR__) . "/apps", ) ); $app = new App($configs); $app->setErrorHandler("myErrorHandler"); $app->run();5.1.1 異常預(yù)警 - 結(jié)果樣本
int(999) string(33) "Fatal Error: Class "ck" not found" string(53) "/data/www/box3.cn/apps/api/services/Index.php" int(42)5.2 PHP腳本執(zhí)行時(shí)間耗時(shí)預(yù)警
[dongshuang@box3 /data/www/box3.cn/public]$ cat index.php array( "root_path" => dirname(__DIR__) . "/apps", ) ); $app = new App($configs); $app->setTimeoutHandler("myTimeoutHandler"); $app->run();5.2.1 耗時(shí)預(yù)警 - 結(jié)果樣本
int(976) string(44) "/index/redis executing too slow 0.508643 sec"六、Asf 預(yù)警錯(cuò)誤號(hào)區(qū)間段說明 6.1 《異常預(yù)警》錯(cuò)誤號(hào)區(qū)間段 990 ~ 999
errno = 999, 表示含義: Fatal Error (框架會(huì)對(duì)異常信息進(jìn)行有效攔截, 防止服務(wù)端信息泄露)
errno = 998, 表示含義: Warning
errno = 997, 表示含義: Notice
errno = 996, 表示含義: Strict
errno = 995, 表示含義: Deprecated
errno = 994, 表示含義: Unkown Error
6.2 《超時(shí)預(yù)警》錯(cuò)誤號(hào)區(qū)間段 970 ~ 989errno = 970, 表示含義: MySQL 單條SQL執(zhí)行時(shí)間超過預(yù)設(shè)閥值
errno = 971, 表示含義: Redis 單條NoSQL執(zhí)行時(shí)間超過預(yù)設(shè)閥值
errno = 972, 表示含義: Memcached 單條NoSQL執(zhí)行時(shí)間超過預(yù)設(shè)閥值
errno = 973, 表示含義: PgSQL 單條SQL執(zhí)行時(shí)間超過預(yù)設(shè)閥值
errno = 974, 表示含義: SQLite 單條SQL執(zhí)行時(shí)間超過預(yù)設(shè)閥值
errno = 975, 表示含義: CURL 請(qǐng)求時(shí)間超過預(yù)設(shè)閥值
errno = 976, 表示含義: 腳本完整生命周期請(qǐng)求時(shí)間超過預(yù)設(shè)閥值
持續(xù)開放更多的功能
七、結(jié)束語感謝大家的閱讀,希望能給大家?guī)韼椭绻褂弥杏幸蓡栒?qǐng)聯(lián)系我們,當(dāng)然了我們也可以聊點(diǎn)更好玩的 ^_^
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/30179.html
摘要:一是什么全稱用語言編寫的輕量級(jí)擴(kuò)展框架專注于開發(fā)。這里只是給出了一種測(cè)試方法通過多次不同并發(fā)數(shù)測(cè)試結(jié)果得知與原生性能消耗是。業(yè)務(wù)開發(fā)速度結(jié)論采用框架開發(fā)業(yè)務(wù)代碼量能節(jié)約。 showImg(https://segmentfault.com/img/bVbamHp?w=320&h=320); 一、Asf 是什么? 全稱 API Services Framework, 用C語言編寫的輕量級(jí)P...
摘要:傳統(tǒng)與比較傳統(tǒng)的框架每次請(qǐng)求都會(huì)去重新加載配置文件。開啟情況下還是有執(zhí)行的過程時(shí)間框架讀取到配置文件的內(nèi)容保存到系統(tǒng)內(nèi)存下一次請(qǐng)求直接去內(nèi)存讀取數(shù)據(jù)。也提供非常簡(jiǎn)單的配置實(shí)現(xiàn)。 傳統(tǒng)MVC 與 Asf 比較 傳統(tǒng)的MVC框架 每次請(qǐng)求都會(huì)去重新加載配置文件。即使配置文件內(nèi)容沒有更新, 也會(huì)去重新加載一次。這是一個(gè)很不好的設(shè)計(jì)。(開啟Opcache情況下, 還是有執(zhí)行的過程時(shí)間) Asf...
摘要:毫無疑問這一部分會(huì)引起廠商和粉絲的爭(zhēng)議,但是作為學(xué)術(shù)討論來看,作者堅(jiān)持這個(gè)觀點(diǎn)它們單獨(dú)不能構(gòu)成防火墻。部署防火墻的目的,即隔離網(wǎng)段網(wǎng)域間的安全風(fēng)險(xiǎn)。上文說道防火墻是程序,可能會(huì)使一些未涉足過嵌入式設(shè)備的粉絲感到迷惑。 showImg(http://segmentfault.com/img/bVbKG0); 一、聲明 此文僅代表我個(gè)人對(duì)防火墻的理解。不夸張的說,基于認(rèn)識(shí)的局限性,本文...
摘要:通過業(yè)務(wù)處理異常,將不正常的業(yè)務(wù)處理結(jié)果返回給調(diào)用者或其他。通常會(huì)在層中寫與數(shù)據(jù)庫相關(guān)的代碼,如表的關(guān)聯(lián)關(guān)系,表屬性的可取值等。返回此類響應(yīng)表示服務(wù)器拋出了未捕捉處理的異常或錯(cuò)誤。 前言 之前在公司負(fù)責(zé)了一個(gè)項(xiàng)目,進(jìn)行了前后端分離,筆者負(fù)責(zé)了整個(gè)項(xiàng)目的基本結(jié)構(gòu)的搭建,在此總結(jié)一些經(jīng)驗(yàn)。本文主要介紹后端web api的設(shè)計(jì)與實(shí)現(xiàn)。demo代碼鏈接:github代碼 基本架構(gòu) 代碼分層 應(yīng)...
閱讀 3207·2021-09-22 15:05
閱讀 2763·2019-08-30 15:56
閱讀 1071·2019-08-29 17:09
閱讀 805·2019-08-29 15:12
閱讀 2088·2019-08-26 11:55
閱讀 3074·2019-08-26 11:52
閱讀 3382·2019-08-26 10:29
閱讀 1386·2019-08-23 17:19