最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

教你如何精準(zhǔn)統(tǒng)計(jì)出你的接口"QPS"

 更新時(shí)間:2021年08月11日 10:20:17   作者:科比不來it  
今天小編就為大家分享一篇關(guān)于QPS的精準(zhǔn)計(jì)算方法,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧

QPS是什么

我們先回憶一下,QPS的概念如下所示:

QPS(Query Per Second):每秒請(qǐng)求數(shù),就是說服務(wù)器在一秒的時(shí)間內(nèi)處理了多少個(gè)請(qǐng)求。

那我們?cè)趺垂莱雒棵腌娔芴幚矶嗌僬?qǐng)求呢?

OK,用日志來估計(jì)!那日志怎么記錄呢,細(xì)分下來,有兩種方式。

方式一:自己在接口里記錄

這種方式指的是在你的接口里,日志記錄了能體現(xiàn)該接口特性的,并具有唯一性的字符串!

例如,下面這一段代碼

@RestController 
@RequestMapping("/home") 
public class IndexController {
 //省略
 @RequestMapping("/index") 
 String index() { 
 logger.info("渣渣煙");
 return "index"; 
 } 
} 

假設(shè)現(xiàn)在我要統(tǒng)計(jì)index這個(gè)接口的QPS!

OK,什么叫能體現(xiàn)該接口特性的字符串呢!就像上面的"渣渣煙"這個(gè)字符串,只在index這個(gè)接口里出現(xiàn)過,沒在其他其他接口里出現(xiàn)過!因此,只要統(tǒng)計(jì)出"渣渣煙"這個(gè)字符串在日志里的出現(xiàn)次數(shù),就能知道該接口的請(qǐng)求次數(shù)!

什么叫具有唯一性的字符串呢!所謂唯一性,指的是"渣渣煙"這個(gè)字符串,在這個(gè)接口的一次調(diào)用流程中,只出現(xiàn)一次!如果出現(xiàn)兩次,就會(huì)導(dǎo)致到時(shí)候統(tǒng)計(jì)出來的次數(shù)會(huì)多一倍,所以盡量選擇具有唯一性的字段!

方式二:利用tomcat的access log

如果你的日志里沒有我上面提到的字段。OK,那就用tomcat自帶的access log功能吧!

因?yàn)槲移綍r(shí)內(nèi)置的tomcat比較多,指定下面兩個(gè)屬性即可

server.tomcat.accesslog.directory
設(shè)定log的目錄,默認(rèn): logs
server.tomcat.accesslog.enabled
是否開啟access log,默認(rèn): false

此時(shí),你訪問一次/home/index地址,會(huì)有下面這樣日志

127.0.0.1 - - [19/Aug/2019:23:55:27 +0800] “POST /home/index HTTP/1.1” 200 138
那么,你就可以根據(jù)日志中,該記錄的出現(xiàn)次數(shù),統(tǒng)計(jì)index接口的QPS。

實(shí)戰(zhàn)

假設(shè),你這會(huì)日志已經(jīng)拿到手了,名字為xxx.log。

假設(shè)日志內(nèi)容如下

//省略,都長(zhǎng)差不多,貼其中一條就行
0:0:0:0:0:0:0:1 - - [27/Dec/2018:20:41:57 +0800] "GET /mvc2/upload.do HTTP/1.1" 404 949 http-bio-8080-exec-5 43
//省略

這個(gè)時(shí)候,你執(zhí)行一串命令長(zhǎng)下面這樣的,進(jìn)行統(tǒng)計(jì)就行!

cat xx.log |grep 'GET /mvc2'|cut -d ' ' -f4|uniq -c|sort -n -r 

出來等結(jié)果就是

20 [27/Dec/2018:20:40:44
11 [27/Dec/2018:20:47:58
10 [27/Dec/2018:20:47:42
1 [27/Dec/2018:20:41:57

然后你就知道,原來在20:40:44 分。。這個(gè)接口的QPS最高,達(dá)到了驚人的20QPS!

現(xiàn)在,來講一下命令什么意思!

cat xxx.log : 讀文件內(nèi)容

grep ‘GET /mvc2' : 將文件內(nèi)容按照GET /mvc2 進(jìn)行過濾

cut -d ' ' -f4 : 過濾出來的內(nèi)容按照空格進(jìn)行分割,取第四列內(nèi)容

uniq -c : 每列旁邊顯示該行重復(fù)出現(xiàn)的次數(shù)

sort -n -r : 依照數(shù)值的大小排序

那么,如果是其他日志格式,無外乎 ”cut語句“的處理不同而已,道理類似!此法可以估算出單機(jī)的某接口的 “QPS” 是多少!

估算

我們現(xiàn)在估計(jì)出了單機(jī)的QPS。接下來,估算集群的QPS。

這就要根據(jù)負(fù)載均衡的策略來估計(jì)!

比如,你部署了32臺(tái)機(jī)器,負(fù)載均衡的策略恰巧為輪詢,那集群的QPS就是單機(jī)的QPS乘32就好了。

所以,根據(jù)具體的策略,來估計(jì)整個(gè)集群的QPS多大!一般有2000qps已經(jīng)是很高的了。

總結(jié)

本篇文章就到這里了,希望能給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • Java數(shù)組創(chuàng)建的3種方法6種寫法代碼示例

    Java數(shù)組創(chuàng)建的3種方法6種寫法代碼示例

    這篇文章主要給大家介紹了關(guān)于Java數(shù)組創(chuàng)建的3種方法6種寫法,在Java中我們可以使用關(guān)鍵字new來創(chuàng)建一個(gè)數(shù)組,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-01-01
  • 實(shí)例講解JAVA 適配器模式

    實(shí)例講解JAVA 適配器模式

    這篇文章主要介紹了JAVA 適配器模式的的相關(guān)資料,文中示例代碼非常詳細(xì),供大家參考和學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • Java中抽象類與方法的重寫方式

    Java中抽象類與方法的重寫方式

    這篇文章主要介紹了Java中抽象類與方法的重寫方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • Java8如何利用Lambda快速生成map、多層嵌套map

    Java8如何利用Lambda快速生成map、多層嵌套map

    這篇文章主要介紹了Java8如何利用Lambda快速生成map、多層嵌套map問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • Mybatis分頁的4種方式實(shí)例

    Mybatis分頁的4種方式實(shí)例

    這篇文章主要介紹了Mybatis分頁的4種方式實(shí)例,包括數(shù)組分頁,sql分頁,攔截器分頁,RowBounds分頁,需要的朋友可以參考下
    2022-04-04
  • Spring框架IOC容器底層原理詳解

    Spring框架IOC容器底層原理詳解

    在java當(dāng)中一個(gè)類想要使用另一個(gè)類的方法,就必須在這個(gè)類當(dāng)中創(chuàng)建這個(gè)類的對(duì)象,Spring將創(chuàng)建對(duì)象的權(quán)利給了IOC,在IOC當(dāng)中創(chuàng)建了ABC三個(gè)對(duì)象,那么我們我們其他的類只需要調(diào)用集合,大大的解決了程序耦合性的問題
    2022-07-07
  • SSH框架網(wǎng)上商城項(xiàng)目第30戰(zhàn)之項(xiàng)目總結(jié)(附源碼下載地址)

    SSH框架網(wǎng)上商城項(xiàng)目第30戰(zhàn)之項(xiàng)目總結(jié)(附源碼下載地址)

    這篇文章主要介紹了SSH框架網(wǎng)上商城項(xiàng)目第30戰(zhàn)之項(xiàng)目總結(jié),并附源碼下載地址,感興趣的小伙伴們可以參考一下
    2016-06-06
  • SpringBoot中配置雙數(shù)據(jù)源的實(shí)現(xiàn)示例

    SpringBoot中配置雙數(shù)據(jù)源的實(shí)現(xiàn)示例

    在許多應(yīng)用程序中,可能會(huì)遇到需要連接多個(gè)數(shù)據(jù)庫(kù)的情況,本文主要介紹了SpringBoot中配置雙數(shù)據(jù)源的實(shí)現(xiàn)示例,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-08-08
  • Spring Boot無縫集成MongoDB

    Spring Boot無縫集成MongoDB

    這篇文章主要介紹了Spring Boot無縫集成MongoDB的相關(guān)知識(shí),本文涉及到MongoDB的概念和nosql的應(yīng)用場(chǎng)景,需要的朋友可以參考下
    2017-04-04
  • java中l(wèi)ong(Long)與int(Integer)之間的轉(zhuǎn)換方式

    java中l(wèi)ong(Long)與int(Integer)之間的轉(zhuǎn)換方式

    這篇文章主要介紹了java中l(wèi)ong(Long)與int(Integer)之間的轉(zhuǎn)換方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10

最新評(píng)論

广东省| 龙州县| 木兰县| 固阳县| 松原市| 九江市| 松桃| 万荣县| 志丹县| 共和县| 施秉县| 扶绥县| 威宁| 黄山市| 资中县| 容城县| 大邑县| 泾阳县| 舒城县| 老河口市| 安仁县| 永仁县| 博野县| 五家渠市| 婺源县| 成武县| 衡东县| 岳普湖县| 黄陵县| 新田县| 福清市| 繁峙县| 昭觉县| 岳池县| 平谷区| 台江县| 长岭县| 东乡| 黑龙江省| 庄河市| 桂东县|