本节介绍的主题由 install_vertica
脚本自动执行,请参阅使用命令行安装。如果没有遇到任何安装问题,请转至管理员指南了解有关如何配置和运行数据库的说明。
排除 Vertica 安装故障
- 1: 验证脚本
- 2: 启用安全 shell (SSH) 登录
1 - 验证脚本
Vertica 提供了多种可在部署 Vertica 之前使用的验证实用程序,以帮助确定主机和网络能否正确地处理 Vertica 所需的处理和网络流量。在遇到性能问题以及需要诊断问题时,也可以使用这些实用工具。
安装 Vertica RPM 之后,可以访问 /opt/vertica/bin
中的以下脚本:
-
Vcpuperf - 用于验证 CPU 性能的 CPU 性能测试。
-
Vioperf - 用于验证硬盘驱动器速度和一致性的输入/输出测试。
-
Vnetperf - 用于测试主机间网络延迟和吞吐量的网络测试。
这些实用工具可随时运行,但最适合在运行 install_vertica 脚本之前使用。
1.1 - Vcpuperf
Vcpuperf 实用工具用于测量服务器的 CPU 处理速度并将其与通用服务器 CPU 基准进行比较。该实用工具会执行 CPU 测试,并测量完成测试所需的时间。测试的评分越低,CPU 的性能越好。
Vcpuperf 实用工具还会检查高负载时间和低负载时间,以确定是否启用了 CPU 限制。如果服务器的低负载计算时间明显比高负载计算时间长,则可能已启用 CPU 限制。CPU 限制是一项节能功能。但 CPU 限制可能会降低服务器的性能。Vertica 建议禁用 CPU 限制以增强服务器性能。
语法
vcpuperf [-q]
选项
返回
-
CPU 时间:CPU 运行测试所花费的时间量。
-
实际时间:执行测试的总时间。
-
高负载时间:在模拟高 CPU 负载时运行负载测试的时间量。
-
低负载时间:在模拟低 CPU 负载时运行负载测试的时间量。
示例
以下示例显示了在已启用 CPU 限制的 Xeon 5670 CPU 上,CPU 以稍慢于预期速度的速度运行。
[root@node1 bin]# /opt/vertica/bin/vcpuperf
Compiled with: 4.1.2 20080704 (Red Hat 4.1.2-52) Expected time on Core 2, 2.53GHz: ~9.5s
Expected time on Nehalem, 2.67GHz: ~9.0s
Expected time on Xeon 5670, 2.93GHz: ~8.0s
This machine's time:
CPU Time: 8.540000s
Real Time:8.710000s
Some machines automatically throttle the CPU to save power.
This test can be done in <100 microseconds (60-70 on Xeon 5670, 2.93GHz).
Low load times much larger than 100-200us or much larger than the corresponding high load time
indicate low-load throttling, which can adversely affect small query / concurrent performance.
This machine's high load time: 67 microseconds.
This machine's low load time: 208 microseconds.
1.2 - Vioperf
vioperf
实用工具会快速测试主机的输入和输出子系统的性能。该实用工具将执行下列测试:
-
顺序写入
-
顺序重写
-
顺序读取
-
跳过读取(读取非相邻数据块)
该实用工具会验证主机读取的字节数与写入的字节数是否相同,并将其输出打印到 STDOUT。该实用工具还会将输出记录到 JSON 格式的文件中。
对于 HDFS 中的数据,该实用程序虽然进行测试,但不会写入。
语法
vioperf [--help] [--duration=<INTERVAL>] [--log-interval=<INTERVAL>]
[--log-file=<FILE>] [--condense-log] [--thread-count=<N>] [--max-buffer-size=<SIZE>]
[--preserve-files] [--disable-crc] [--disable-direct-io] [--debug]
[<DIR>*]
最低 IO 性能和建议的 I/O 性能
-
在群集的所有节点上以并发方式同时进行全双工(读取和写入)IO 时,每个节点上的每个物理处理器核心要求的最低 I/O 性能为 20 MB/s 读/写。
-
建议的 I/O 是每个节点上每个物理内核 40 MB/s。
-
对于具有 2 个超线程六核 CPU(12 个物理内核)的节点,要求的最低 I/O 速率为 240 MB/s。Vertica 建议 480 MB/s。
例如,对于具有 2 个超线程六核心 CPU(12 个物理核心)的节点而言,要求的最低 I/O 速率为 240 MB/s,建议速率为 480 MB/s。
vioperf 需要的磁盘空间
vioperf
大约需要 4.5 GB 空间才能运行。
选项
返回
该实用工具返回以下信息:
示例
从终端调用 vioperf
将会输出以下消息和示例结果:
[dbadmin@v_vmart_node0001 ~]$ /opt/vertica/bin/vioperf --duration=60s
The minimum required I/O is 20 MB/s read and write per physical processor core on each node, in full duplex
i.e. reading and writing at this rate simultaneously, concurrently on all nodes of the cluster.
The recommended I/O is 40 MB/s per physical core on each node.
For example, the I/O rate for a server node with 2 hyper-threaded six-core CPUs is 240 MB/s required minimum, 480 MB/s recommended.
Using direct io (buffer size=1048576, alignment=512) for directory "/home/dbadmin"
test | directory | counter name | counter value | counter value (10 sec avg) | counter value/core | counter value/core (10 sec avg) | thread count | %CPU | %IO Wait | elapsed time (s)| remaining time (s)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Write | /home/dbadmin | MB/s | 420 | 420 | 210 | 210 | 2 | 89 | 10 | 10 | 5
Write | /home/dbadmin | MB/s | 412 | 396 | 206 | 198 | 2 | 89 | 9 | 15 | 0
ReWrite | /home/dbadmin | (MB-read+MB-write)/s | 150+150 | 150+150 | 75+75 | 75+75 | 2 | 58 | 40 | 10 | 5
ReWrite | /home/dbadmin | (MB-read+MB-write)/s | 158+158 | 172+172 | 79+79 | 86+86 | 2 | 64 | 33 | 15 | 0
Read | /home/dbadmin | MB/s | 194 | 194 | 97 | 97 | 2 | 69 | 26 | 10 | 5
Read | /home/dbadmin | MB/s | 192 | 190 | 96 | 95 | 2 | 71 | 27 | 15 | 0
SkipRead | /home/dbadmin | seeks/s | 659 | 659 | 329.5 | 329.5 | 2 | 2 | 85 | 10 | 5
SkipRead | /home/dbadmin | seeks/s | 677 | 714 | 338.5 | 357 | 2 | 2 | 59 | 15 | 0
注意
在评估最小 I/O 性能和建议的 I/O 性能时,在评估结果中包含写入和读取值。ReWrite 和 SkipRead 值与确定最小 I/O 和建议的 I/O 无关。1.3 - Vnetperf
vnetperf 实用程序测量数据库主机的网络性能,以及 TCP 和 UDP 协议的网络延迟和吞吐量。
当心
此实用程序会导致高网络负载,从而降低数据库性能。不要在 Vertica 生产数据库上使用此实用程序。此实用程序有助于识别以下问题:
-
所有主机或一个主机的吞吐量低
-
所有主机或一个主机的延迟高
-
一个或多个主机或子网之间存在瓶颈
-
可同时建立的 TCP 连接数限制过低
-
网络丢包率高
语法
vnetperf [[options](#Options)] [[tests](#Tests)]
选项
测试
vnetperf 可以指定以下一项或多项测试。如果未指定任何测试,vnetperf 将运行所有测试。将为每个主机打印测试结果。
建议的网络性能
-
建议的最大 RTT(往返时间)延迟为 1000 微秒。理想的 RTT 延迟为 200 微秒或更低。Vertica 建议时钟偏差在 1 秒以下。
-
建议的最小吞吐量为 100 MB/s。理想的吞吐量为 800 MB/s 或更高。
注意
UDP 吞吐量可以更低;多个网络交换机会对性能产生不利影响。
示例
$ vnetperf latency tcp-throughput
The maximum recommended rtt latency is 2 milliseconds. The ideal rtt latency is 200 microseconds or less. It is recommended that clock skew be kept to under 1 second.
test | date | node | index | rtt latency (us) | clock skew (us)
-------------------------------------------------------------------------------------------------------------------------
latency | 2022-03-29_10:23:55,739 | 10.20.100.247 | 0 | 49 | 3
latency | 2022-03-29_10:23:55,739 | 10.20.100.248 | 1 | 272 | -702
latency | 2022-03-29_10:23:55,739 | 10.20.100.249 | 2 | 245 | 1037
The minimum recommended throughput is 100 MB/s. Ideal throughput is 800 MB/s or more. Note: UDP numbers may be lower, multiple network switches may reduce performance results.
date | test | rate limit (MB/s) | node | MB/s (sent) | MB/s (rec) | bytes (sent) | bytes (rec) | duration (s)
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2022-03-29_10:23:55,742 | tcp-throughput | 32 | 10.20.100.247 | 30.579 | 30.579 | 32112640 | 32112640 | 1.00151
2022-03-29_10:23:55,742 | tcp-throughput | 32 | 10.20.100.248 | 30.5791 | 30.5791 | 32112640 | 32112640 | 1.0015
2022-03-29_10:23:55,742 | tcp-throughput | 32 | 10.20.100.249 | 30.5791 | 30.5791 | 32112640 | 32112640 | 1.0015
2022-03-29_10:23:55,742 | tcp-throughput | 32 | average | 30.579 | 30.579 | 32112640 | 32112640 | 1.0015
2022-03-29_10:23:57,749 | tcp-throughput | 64 | 10.20.100.247 | 61.0952 | 61.0952 | 64094208 | 64094208 | 1.00049
2022-03-29_10:23:57,749 | tcp-throughput | 64 | 10.20.100.248 | 61.096 | 61.096 | 64094208 | 64094208 | 1.00048
2022-03-29_10:23:57,749 | tcp-throughput | 64 | 10.20.100.249 | 61.0952 | 61.0952 | 64094208 | 64094208 | 1.00049
2022-03-29_10:23:57,749 | tcp-throughput | 64 | average | 61.0955 | 61.0955 | 64094208 | 64094208 | 1.00048
2022-03-29_10:23:59,753 | tcp-throughput | 128 | 10.20.100.247 | 122.131 | 122.131 | 128122880 | 128122880 | 1.00046
2022-03-29_10:23:59,753 | tcp-throughput | 128 | 10.20.100.248 | 122.132 | 122.132 | 128122880 | 128122880 | 1.00046
2022-03-29_10:23:59,753 | tcp-throughput | 128 | 10.20.100.249 | 122.132 | 122.132 | 128122880 | 128122880 | 1.00046
2022-03-29_10:23:59,753 | tcp-throughput | 128 | average | 122.132 | 122.132 | 128122880 | 128122880 | 1.00046
2022-03-29_10:24:01,757 | tcp-throughput | 256 | 10.20.100.247 | 243.819 | 244.132 | 255754240 | 256081920 | 1.00036
2022-03-29_10:24:01,757 | tcp-throughput | 256 | 10.20.100.248 | 244.125 | 243.282 | 256049152 | 255164416 | 1.00025
2022-03-29_10:24:01,757 | tcp-throughput | 256 | 10.20.100.249 | 244.172 | 243.391 | 256114688 | 255295488 | 1.00032
2022-03-29_10:24:01,757 | tcp-throughput | 256 | average | 244.039 | 243.601 | 255972693 | 255513941 | 1.00031
2022-03-29_10:24:03,761 | tcp-throughput | 512 | 10.20.100.247 | 337.232 | 485.247 | 355893248 | 512098304 | 1.00645
2022-03-29_10:24:03,761 | tcp-throughput | 512 | 10.20.100.248 | 446.16 | 231.001 | 467894272 | 242253824 | 1.00013
2022-03-29_10:24:03,761 | tcp-throughput | 512 | 10.20.100.249 | 349.667 | 409.961 | 368476160 | 432013312 | 1.00497
2022-03-29_10:24:03,761 | tcp-throughput | 512 | average | 377.686 | 375.403 | 397421226 | 395455146 | 1.00385
2022-03-29_10:24:05,772 | tcp-throughput | 640 | 10.20.100.247 | 328.279 | 509.256 | 383975424 | 595656704 | 1.11548
2022-03-29_10:24:05,772 | tcp-throughput | 640 | 10.20.100.248 | 505.626 | 217.217 | 532250624 | 228655104 | 1.00389
2022-03-29_10:24:05,772 | tcp-throughput | 640 | 10.20.100.249 | 390.355 | 474.89 | 410812416 | 499777536 | 1.00365
2022-03-29_10:24:05,772 | tcp-throughput | 640 | average | 408.087 | 400.454 | 442346154 | 441363114 | 1.04101
2022-03-29_10:24:07,892 | tcp-throughput | 768 | 10.20.100.247 | 300.5 | 426.762 | 318734336 | 452657152 | 1.01154
2022-03-29_10:24:07,892 | tcp-throughput | 768 | 10.20.100.248 | 268.252 | 402.891 | 283017216 | 425066496 | 1.00616
2022-03-29_10:24:07,892 | tcp-throughput | 768 | 10.20.100.249 | 510.569 | 243.649 | 535592960 | 255590400 | 1.00042
2022-03-29_10:24:07,892 | tcp-throughput | 768 | average | 359.774 | 357.767 | 379114837 | 377771349 | 1.00604
2022-03-29_10:24:09,911 | tcp-throughput | 1024 | 10.20.100.247 | 304.545 | 444.261 | 334987264 | 488669184 | 1.049
2022-03-29_10:24:09,911 | tcp-throughput | 1024 | 10.20.100.248 | 422.246 | 192.773 | 474284032 | 216530944 | 1.07121
2022-03-29_10:24:09,911 | tcp-throughput | 1024 | 10.20.100.249 | 353.206 | 446.809 | 378732544 | 479100928 | 1.0226
2022-03-29_10:24:09,911 | tcp-throughput | 1024 | average | 359.999 | 361.281 | 396001280 | 394767018 | 1.0476
2022-03-29_10:24:11,988 | tcp-throughput | 2048 | 10.20.100.247 | 343.324 | 414.559 | 387710976 | 468156416 | 1.07697
2022-03-29_10:24:11,988 | tcp-throughput | 2048 | 10.20.100.248 | 292.44 | 246.254 | 308314112 | 259620864 | 1.00544
2022-03-29_10:24:11,988 | tcp-throughput | 2048 | 10.20.100.249 | 437.559 | 405.02 | 459145216 | 425000960 | 1.00072
2022-03-29_10:24:11,988 | tcp-throughput | 2048 | average | 357.774 | 355.278 | 385056768 | 384259413 | 1.02771
JSON results available at: ./results.2022-03-29_10:23:51,548.json
2 - 启用安全 shell (SSH) 登录
管理帐户必须能够使用安全 Shell (SSH) 登录 (ssh) 所有主机,而无需指定密码。Shell 脚本 install_vertica 可自动执行此操作。本节说明如何在必要时手动执行该操作。
-
如果尚未在所有主机上安装 SSH,则立即以 root 用户身份登录每个主机并安装 SSH。可以从 OpenSSH 下载免费版本的 SSH 连接工具。
-
登录到 Vertica 管理员帐户(在此示例中为 dbadmin)。
-
将主目录 (~) 设为仅可供您自己写入。选择以下命令之一:
$ chmod 700 ~
或
$ chmod 755 ~
其中:
-
更改至主目录:
$ cd ~
-
生成私钥/公钥对:
$ ssh-keygen -t rsaGenerating public/private rsa key pair. Enter file in which to save the key (/home/dbadmin/.ssh/id_rsa): Created directory '/home/dbadmin/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/dbadmin/.ssh/id_rsa. Your public key has been saved in /home/dbadmin/.ssh/id_rsa.pub.
-
将 .ssh 目录设为仅可供您自己读取和写入:
$ chmod 700 ~/.ssh
-
更改至 .ssh 目录:
$ cd ~/.ssh
-
将文件
id_rsa.pub
复制到文件authorized_keys2
。$ cp id_rsa.pub authorized_keys2
-
将 .ssh 目录中的文件设为仅可供您自己读取和写入:
$ chmod 600 ~/.ssh/*
-
对于每个群集主机:
$ scp -r ~/.ssh <host>:.
-
连接到每个群集主机。首次通过 ssh 连接到新的远程计算机时,可能收到与以下类似的消息:
$ ssh dev0 Warning: Permanently added 'dev0,192.168.1.92' (RSA) to the list of known hosts.
仅在首次通过 ssh 连接到特定远程主机时显示此消息。