<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                Tracker的調試工具鏈目前有4種,分別是`性能分析`、`阻塞檢測`、`內存泄漏`、`查看當前調用棧`。 經常有人問它們的適用場景以及區別,在此予以說明: ## 內存泄漏 是用在 Swoole、Workerman 等常駐進程模式下的工具,在 FPM 下是不存在內存泄漏一說的,它能幫助你檢查這種情況: 在請求開始后向某一個全局變量(`$GLOBALS`或者類的靜態屬性等)追加內容,并且在請求結束的時候追加在全局變量的內容沒有被`unset`掉,那么就認為有內存泄漏。 >[info] 請求開始和請求結束可以通過調用`Tracker API`來指定,具體參考「[調試器](debuger.md)」章節`手動埋點調試`。 ## 阻塞檢測 阻塞檢測工具的準確的來說應該叫做`阻塞系統調用檢測工具`,它的原理是攔截進程的所有系統調用,在開始和結束打點取時間差,如果大于配置的時間(默認`10ms`)就把當前的 PHP 調用堆棧上報到 Tracker 的后臺,可以方便的定位到調用棧阻塞在哪個系統調用,耗時多少毫秒,通過具體的系統調用我們能判斷出進程是鎖等待、還是磁盤 IO 問題、網絡 IO 問題等。 但是這個工具無法檢測出卡死的問題,具體可以參考微課程的這篇文章[教你秒級定位PHP卡死問題](https://course.swoole-cloud.com/article/2) ## 查看當前調用棧 對于阻塞檢測工具無法發現的卡死問題,需要用`查看當前調用棧`工具來定位到底卡死在哪個 PHP 函數了,當前的調用堆棧是什么。 ## 性能分析 是最直觀的一種性能分析方式,因為他可以生成一整張的調用圖,他的原理是攔截所有的 PHP 函數調用,并且在開始和結束打點取時間差。 它是非常好的`定位hot函數`的工具,方便的定位到最耗時的函數是哪個,但是無法看到調用棧,也不知道具體的系統調用,每次調用的耗時也不知道。 ## 到底該用哪個工具 一般性能調優的話用`性能分析`工具就夠用,生產環境突然產生了性能問題最先用性能分析查看,先大概定位問題,如果請求阻塞非常久(也就是卡死)可以直接用`查看當前調用棧`工具查看,如果請求只是變慢了就用`阻塞檢測工具`。 當然也可以挨個使用一遍,多維度發現問題。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看