最近一項目出現問題,用戶訪問時系統一直處於白屏狀態沒法響應。此問題以前也出現過,是因爲以前同事開發的長鏈接耗盡系統全部線程致使,但當時發現問題已經修改,現在又再次出現此問題,只能導出線程日誌進行分析,但分析過程當中發現直接經過命令行方式執行JDK提供工具會給出錯誤提示,「存儲空間不足,沒法處理此命令」。java
服務器環境:windows server 2008linux
根據該錯誤提示進行查詢,發現網上不少軟件都曾經遇到該提示,但不少給出的解決方案都是添加虛擬內存進行解決,但此種方案明顯不適用於我這種問題。shell
在我本地開發環境經過jstack或者jps等工具執行的時候徹底沒有任何問題,並且以前在linux環境下經過這些工具執行也沒什麼問題,爲何服務器就不行了呢?windows
在網上發現了這麼一段話
服務器
Jstack only allows you to connect to JVM's running in the same user context. Many people use a service wrapper to start their products: this puts the JVM in the Local System Account user context. Since this special account has no login shell, you won't be able to force a thread dump normally.
後來仔細一想項目確實是經過服務方式進行註冊,並且以前進行問題定位的時候也是直接使用的jvisualvm 進行查看就不存在帳戶問題。app
這種狀況下經過CMD直接運行JPS命令,也只能等到當前jps的進程ID
工具
這種狀況只能繼續想辦法處理下去,在處理過程當中發現國外網友也出現此問題,建議經過psexec進行處理,經過psexec使用system 用戶進行程序執行。this
網上下載該程序後使用命令後,發現JPS命令可以執行了,可是仍是沒法執行jstackspa
無奈只能接着嘗試,在查看了psexec 的命令後,我想要不試試直接在當前窗口執行命令行
最後終於成功!