第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

無法使用 Jetty 服務(wù)器線程池最大大小限制并發(fā)請求,為什么?

無法使用 Jetty 服務(wù)器線程池最大大小限制并發(fā)請求,為什么?

慕容708150 2023-10-13 10:29:32
我創(chuàng)建了一個帶有線程池的 Jetty 服務(wù)器來限制對服務(wù)器的并發(fā)請求數(shù)量。但我指定的總請求大小始終比我指定的大小小 5。依賴關(guān)系:<dependency>    <groupId>org.eclipse.jetty</groupId>    <artifactId>jetty-server</artifactId>    <version>9.4.6.v20170531</version></dependency>服務(wù)器代碼:public void httpServer(int port, Handler handler, String name) {    QueuedThreadPool threadPool = new QueuedThreadPool(10);    Server server = new Server(threadPool);    server.setHandler(handler);    HttpConfiguration http = new HttpConfiguration();    ServerConnector serverConnector = new ServerConnector(server, new HttpConnectionFactory(http));    serverConnector.setPort(port);    server.setConnectors(new Connector[]{serverConnector});    try {        log.info(name + " Listener Started on port: " + port);        server.start();        server.join();    } catch (Exception e) {        log.error("Unable to start Server... Exiting");        log.error(e, e);        System.exit(1);    }}處理程序:public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) {    try {        BufferedReader bufferedReader = request.getReader();        String s;        StringBuilder sb = new StringBuilder();        PrintWriter writer = response.getWriter();        while ((s = bufferedReader.readLine()) != null) {            sb.append(s);        }        System.out.println("Got Request");        Thread.sleep(2000);        response.setStatus(HttpServletResponse.SC_OK);        baseRequest.setHandled(true);    } catch (Exception e) {        e.printStackTrace();    }}在上面的代碼中,指定的 ThreadPool 大小為 10。但同時我只能創(chuàng)建 5。我嘗試將大小更改為 20,但在這種情況下,我可以發(fā)出的并發(fā)請求始終少 5,即 15。知道在哪里嗎?這 5 個線程正在被使用嗎?
查看完整描述

1 回答

?
人到中年有點甜

TA貢獻(xiàn)1895條經(jīng)驗 獲得超7個贊

Jetty 不是這樣工作的。

線程池不是這樣工作的。

Jetty ThreadPool 用于任何需要線程的事情,而不僅僅是請求。

包括 :

  • 低層網(wǎng)絡(luò)

  • nio選擇器

  • 網(wǎng)絡(luò)接受者

  • http會話維護(hù)

  • 部署管理器行為

  • 與憑證提供者合作

  • 內(nèi)部 http 客戶端行為

  • 發(fā)送內(nèi)部請求

  • 異步處理行為

  • http/2 主連接處理(將協(xié)議泵送到每個 http/2 會話/流)

  • osgi模塊解析

  • 文件系統(tǒng)監(jiān)控

  • 超時

  • 注釋/字節(jié)碼掃描

  • 代理行為

  • ETC...

對 ThreadPool 的需求會發(fā)生變化,具體取決于您使用的功能(servlet、字節(jié)碼掃描、代理、fastcgi 等)、您使用的技術(shù)(例如:http/2、websocket、unixsockets 等),甚至您的機(jī)器有多大(你的機(jī)器擁有的核心數(shù)量,nio本身將需要基于你的機(jī)器擁有的核心數(shù)量的子集的線程)。

還有一個從任何提供的線程池中取出的“保留線程”切片,用于處理對服務(wù)器上的操作至關(guān)重要的事情。保留線程的需求可能會在運(yùn)行時發(fā)生變化(如上所述,這也取決于所使用的技術(shù))

如果要限制主動處理的請求數(shù)量,請使用QoSFilter針對要限制的 url 模式的配置。(或者DoSFilter如果您有稍微不同的要求,請使用)

不要通過線程池來做到這一點,那是行不通的。


查看完整回答
反對 回復(fù) 2023-10-13
  • 1 回答
  • 0 關(guān)注
  • 168 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號