2013-10-15 86 views
0

我正在尋找有關測量現有Oracle數據庫連接(perl DBI)的帶寬而不對數據庫服務器端進行任何更改的想法。現在我正在運行一個測量Oracle數據庫連接帶寬

select * from table; 

針對具有近似已知數據量和響應計時的表。我從shell手動運行它,我正在考慮在應用程序的管理/調試部分中實現類似的功能,供管理員查看。具體來說,我看着運行準備首先,然後運行執行,同時使用Time :: HiRes時序性能。

問題:

  1. 是否有使用爲基準更好的SQL語句?也許某些查詢可以即時生成特定數量的無意義數據,就像dd if=/dev/zero bs=1k count=1k
  2. 有人可以想到另一種測量帶寬的方法,它可以集成到Web UI中嗎?一個非交互式的shell命令可以正常工作。

有點背景。我的應用程序通過內部網絡訪問Oracle數據庫。網絡存在帶寬問題。在糟糕的一天,它和撥號一樣糟糕。 實施環境是RHEL/Oracle Instantclient/Perl DBI。

+1

歡迎StackOverflow上。請避免提出推薦方法或工具的問題。該論壇是針對特定的編碼障礙。還有其他Stack Exchange的論壇可能更適合您的需求。 – Renaissance

+2

'man iperf';你的網絡傢伙應該熟悉它 –

+0

第一次嘗試時草率寫作的道歉。我重寫了我的問題 - 現在好點了嗎?不知道我是否完全理解了所有的評論。 –

回答

1

您可以嘗試在位於循環中的Oracle服務器上運行一個小腳本,從指定端口讀取(使用netcat)並將數據丟棄到/ dev/null。然後在你的客戶端上有一個腳本,它每隔一段時間發送一個已知數據量(使用netcat)並且時間需要多長時間。這非常衡量網絡性能,並且獨立於Oracle或磁盤。

事情是這樣的:

在Oracle服務器

while /bin/true 
do 
    nc -l 20000 > /dev/null 
done 

在客戶端

time dd if=/dev/zero bs=1024k count=10 | nc <oracle_ip> 20000 
+0

謝謝你的建議。我的不好 - 我忽略了在第一個版本中提到我寧願不要在數據庫服務器端增加額外的東西,因爲它不在我的控制範圍之內。我主要考慮如何利用現有連接來測量帶寬。儘管優秀的C計劃,以防Iperf無法使用。 –