簡體   English   中英

Playframework線程池

[英]Playframework thread pools

我正在使用YourKit對playframework 2.2.3應用程序進行性能分析,以嘗試解決一些性能問題。 這不是我的應用程序,也不熟悉Play2。該應用程序是利用Web套接字的多人社交游戲。 它在Amazon EC2 m3.large上運行

我在探查器中看到的是,游戲邏輯(通過Web套接字調用開始)是在play-internal-execution-context中的2個線程中的1個執行的。 一些例程涉及I / O,並且由於部分中的方法同步而導致一些阻塞。 有一個名為play-internal-execution-context的線程池,但是隨時都只有兩個在使用。 活動不時移至新線程,我現在可以看到正在使用的線程名稱為play-internal-execution-context-600和601。

我可以在播放文檔中看到

Play內部線程池-Play在內部使用。 此線程池中的任何線程都不應執行任何應用程序代碼,並且此線程池中也不應進行任何阻塞。 可以通過在application.conf中設置internal-threadpool-size來配置其大小,並且默認為可用處理器的數量。

如我所見,涉及應用程序代碼的線程中的堆棧跟蹤可能是開發人員設計錯誤,或者僅僅是由於框架的異步特性,即代碼實際上只是在這些內部線程中通過執行而執行?

祝一切順利

喬恩

請確保您沒有在WebSocket的onReady回調方法中運行阻塞代碼。 任何阻塞或繁重的計算都應卸載到其他線程池中(使用promise或actor)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM