【问题标题】:Measuring Oracle DB connection bandwidth [closed]测量 Oracle DB 连接带宽 [关闭]
【发布时间】:2013-10-22 21:31:14
【问题描述】:

我正在寻找有关测量现有 Oracle DB 连接 (perl DBI) 带宽而不对数据库服务器端进行任何更改的想法。现在我正在运行一个

select * from table;

针对具有大约已知数据量和响应时间的表。我正在从 shell 手动运行它,我正在考虑在应用程序的管理/调试部分实现类似的功能,以供管理员查看。具体来说,我正在考虑先运行 prepare,然后运行 ​​execute,同时使用 Time::HiRes 计时性能。

问题:

  1. 是否有更好的 SQL 语句用于基准测试?也许某些查询可以动态生成特定数量的无意义数据,就像dd if=/dev/zero bs=1k count=1k
  2. 有人能想出另一种可以集成到 Web UI 的带宽测量方法吗?非交互式 shell 命令可以正常工作。

一点背景。我的应用程序正在通过内部网络访问 Oracle DB。网络存在带宽问题。在糟糕的一天,它就像拨号一样糟糕。 实现环境为 RHEL / Oracle Instantclient / Perl DBI。

【问题讨论】:

  • 欢迎来到 StackOverflow。请不要提出推荐方法或工具的问题。该论坛旨在解决特定的编码障碍。 Stack Exchange 上还有其他论坛可能更适合您的需求。
  • man iperf;你的网络人应该熟悉它
  • 对第一次尝试写的草率表示歉意。我重写了我的问题 - 现在更好了吗?不确定我是否完全理解所有评论。
  • @mpapec 谢谢,看起来是一个非常强大的工具。对我来说,这看起来像是完美的 B 计划——现在我正在研究在数据库服务器端使用零附加工具来测量带宽的可能性。此外,沿途的一堆防火墙有时会让生活变得更加困难。
  • @MikkoLipasti 是的,但是带宽分析应该是 IT/网络的责任。他们可以访问交换机和相应的SNMP 带宽数据(mikrotik.com/thedude 给他们一个线索)。

标签: oracle perl dbi bandwidth performance


【解决方案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

【讨论】:

  • 感谢您的建议。我的错 - 我在第一个版本中没有提到我不想依赖在数据库服务器端添加任何额外的东西,因为它不在我的控制范围内。我主要在寻找利用现有连接来测量带宽的方法。不过,如果 iperf 不可用,则非常棒的 C 计划。
猜你喜欢
  • 1970-01-01
  • 2012-07-04
  • 2011-10-10
  • 2017-06-19
  • 1970-01-01
  • 1970-01-01
  • 2020-09-28
  • 2017-10-31
  • 1970-01-01
相关资源
最近更新 更多