2016-10-03 79 views
1

Asterisk服務器需要運行查詢MySQL數據庫的外部腳本(如果您必須知道的話,則爲「AGI」)。這個腳本經常運行,大概每分鐘大約50-100次,並且它不會做太多的事情(大約10-15個SELECTS,對結果進行一些計算並將結果回傳給Asterisk)。什麼是支持MySQL的Linux的低開銷語言?

如果腳本是一個PHP shell腳本,在加載測試期間它會使用大量的CPU(可能是因爲它每次運行時都會將整個php庫加載進去)。

另一方面,如果腳本是bash shell腳本,則需要很長時間才能運行,因爲bash不能(容易地)維護單個MySQL連接並使用10-15個連接/斷開與遠程服務器SSL協商每秒需要幾十分之一秒的時間,因此腳本作爲一個整體可能需要3-4秒。

這項任務有哪些更好的語言選擇?一些開銷較低的東西,但具有簡單的MySQL支持,最好是解釋而不是編譯。

+0

是每分鐘60到100同步? – Drew

+0

當腳本的第二個實例必須啓動時,有時會有一個腳本實例仍在運行,如果這就是您要求的。 – sverreg

+0

我的意思是它阻止。最後,嘗試與社區分享您的想法和分析 – Drew

回答

1

您開始新流程每分鐘50-100次的任何語言都會有一些開銷。無論編寫程序的語言如何,開銷過程都會產生開銷。

理想情況下,您可以通過向服務發出請求來避免該進程的開銷。但它聽起來像你需要使用AGI接口,所以你不能真正逃避這種開銷。

所有腳本語言(PHP/Ruby/Python/Perl)都有需要啓動的解釋器。

即使Java有一個運行時JVM需要在每個進程中啓動,所以這是一個仍然存在開銷的編譯語言的例子。

像C,C++或Go這樣的編譯語言可能是一個很好的選擇,可以最大限度地減少語言運行時的開銷。所有這些都有MySQL的編程接口。