2012-09-21 257 views
1

我一直在構建一個性能測試套件來運行服務器。現在我手動運行這個,但我想自動化它。在目標服務器上,我運行一個python腳本,記錄服務器指標並在我輸入時停止。在測試機器上,我運行一個bash腳本,它可以遍歷JMeter測試,設置時間戳和命名日誌並執行測試。啓動和停止服務器腳本

我想將它們綁在一起,以便bash腳本驅動整個過程,但我不確定如何最好地執行此操作。我可以通過ssh啓動我的python腳本,但是如何在測試完成後暫停它?如果我可以在ssh中完成,那麼我不需要混淆現有的配置,這是一個很大的勝利。 python腳本非常簡單,如果有幫助,我不介意重寫它。

回答

1

最簡單的解決方案可能是讓Python腳本響應信號。當然,如果腳本不需要進行任何清理,只需SIGKILL即可,但讓腳本實際處理關閉請求似乎更清晰。 SIGHUP可能是一個流行的選擇。 Docs here

您可以使用kill命令發送信號,所以如果您知道腳本的pid,通過ssh發送信號沒有問題。解決此問題的通常方法是在啓動腳本時將pid放入/ var/run中的文件中。 (如果你有一個Debian/Ubuntu系統,你可能會發現你有start-stop-daemon工具,這將在這裏做很多繁瑣的工作。)

另一種方法,主要是在一些已知的位置創建一個fifo(命名管道),並且基本上就像你當前使用stdin一樣使用它:服務器等待來自管道的輸入,並且當它得到某些東西時它被識別爲命令,它執行命令(例如「quit」)。這可能是爲了你的目的而矯枉過正,但它具有的優勢是成爲一個更加明確的溝通渠道而不是單一的錘擊。

+0

啊哈!,謝謝,rici!偉大的想法和我現在有新的想法來測試。我會先嚐試第一個建議,因爲它似乎是最簡單的解決方案。我完全忽略了信號庫,這看起來完全像我想象的那樣。我想試試一個解決方案。 –

+0

答案很好,但在嘗試了幾件事情之後,我決定使用Jmeter中的OS Process sampler。我重寫了我的指標收集腳本,以便將其作爲一次性採集一個數據樣本並更新日誌。所以,現在我可以將其附加到客戶端的採樣。這使我可以獨立運行jmeter測試並獲得相同的輸出。我仍然需要多花一點時間,但這看起來不錯。 –