目录
[1 在centos上安装Elasticsearch](#1 在centos上安装Elasticsearch)
[1.1在服务器上安装 Docker](#1.1在服务器上安装 Docker)
[1.2 查找Elasticsearch镜像](#1.2 查找Elasticsearch镜像)
[1.3 安装并运行 Elasticsearch 容器](#1.3 安装并运行 Elasticsearch 容器)
[2 性能测试 Elasticsearch](#2 性能测试 Elasticsearch)
[2.1 安装 Apache Benchmark 工具](#2.1 安装 Apache Benchmark 工具)
[2.2 使用Benchmark进行性能测试](#2.2 使用Benchmark进行性能测试)
[3 性能分析](#3 性能分析)
[3.1 性能测试结果](#3.1 性能测试结果)
[3.2 性能分析说明](#3.2 性能分析说明)
引言
华为云服务器提供高性价比的云计算资源,让您能够以低成本快速搭建和扩展您的应用。不仅我们拥有多种实例规格,能够满足性能和成本之间的灵活平衡,一款相对通用的具备出色性价比的服务器,拥有2核CPU、2GB内存和3MB缓存,适用于各种应用场景。
在这篇文章中,我们将使用这款性能卓越的华为云云耀云服务器L实例,搭载 CentOS 操作系统,来演示如何使用 Benchmark 工具对云上的 Elasticsearch 进行性能测试。这能够帮助您评估云服务器在处理搜索引擎工作负载时的性能表现,以确保您的应用在高效和成本可控的环境下运行。
1 在 centos 上安装 Elasticsearch
1.1在服务器上安装 Docker
安装 Docker 和启用服务
bash
sudo yum install -y docker
sudo systemctl start docker
sudo systemctl enable docker
1.2 查找Elasticsearch镜像
查找elasticsearch镜像文件,使用如下命令
bash
docker search elasticsearch
1.3 安装并运行 Elasticsearch 容器
使用 Docker 安装 Elasticsearch 容器。运行以下命令:
bash
docker run -d --name elasticsearch710 -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" --ulimit memlock=-1:-1 -m 1g docker.elastic.co/elasticsearch/elasticsearch:7.10.0
这个命令用于以 Docker 容器方式运行 Elasticsearch 版本 7.10.0,并配置了各种参数和选项。以下是对该命令的详细解释:
docker run: 这是 Docker 命令,用于启动一个新容器。
-d: 这是一个选项,表示容器将在后台运行,即以"守护进程"模式启动。
--name elasticsearch710: 使用 --name 选项来为容器指定一个名称,这里设置为 "elasticsearch710"。
-p 9200:9200 -p 9300:9300: 使用 -p 选项将容器内部的端口映射到主机上的端口。在这里,9200 和 9300 端口都被映射了,9200 用于 Elasticsearch HTTP 服务,9300 用于 Elasticsearch 内部通信。
-e "discovery.type=single-node": 使用 -e 选项可以设置容器的环境变量。这里设置 discovery.type 为 "single-node",告诉 Elasticsearch 在容器内以单节点模式启动。
-e "ES_JAVA_OPTS=-Xms512m -Xmx512m": 同样使用 -e 选项设置 ES_JAVA_OPTS 环境变量,用于配置 Elasticsearch 的 Java 虚拟机选项。在这里,将堆内存的最小值 (-Xms) 和最大值 (-Xmx) 都设置为 512MB。
--ulimit memlock=-1:-1: 这个选项用于设置容器的 memlock 参数,允许 Elasticsearch 进程锁定内存。 -1 表示没有限制。
-m 1g: 使用 -m 选项设置容器的内存限制为 1GB。
docker.elastic.co/elasticsearch/elasticsearch:7.10.0: 这是要运行的 Docker 镜像的名称。它指定了 Elasticsearch 7.10.0 版本的官方 Docker 镜像,Docker 将会下载并在容器中运行这个镜像。
综合起来,这个命令的作用是以后台模式运行一个名为 "elasticsearch710" 的容器,将容器的 9200 和 9300 端口映射到主机上,配置 Elasticsearch 以单节点模式运行,并设置 Java 虚拟机的堆内存为 512MB,容器内存限制为1GB。此配置适用于单机测试或开发环境。
等待 Elasticsearch 容器启动,可以使用以下命令检查容器的状态:
bash
docker ps
当状态显示为 "Up" 时,Elasticsearch 容器已经成功运行。
在华为云服务器的安全组设置中,对入站规则进行配置,放开9200端口的访问。
2 性能测试 Elasticsearch
2.1 安装 Apache Benchmark 工具
bash
sudo yum install httpd-tools
2.2 使用Benchmark进行性能测试
使用 Apache Benchmark 工具进行性能测试。以下是一个示例命令,它将发送 1000 个请求并显示性能数据:
bash
ab -n 1000 -c 10 http://localhost:9200/
这个命令将执行 1000 个请求,每次并发 10 个请求。你可以根据你的需求调整 -n 和 -c 参数。
测试结果如下图
3 性能分析
3.1 性能测试结果
这个输出是 Apache Benchmark (ab) 工具的性能测试结果,对本地运行的 Elasticsearch 服务进行的性能测试。以下是对这些数据的翻译和性能分析说明:
Server Software: 显示服务器使用的软件。在这里,服务器使用的是未提及的服务器软件。
Server Hostname: 服务器的主机名。在这里,服务器运行在本地主机,所以主机名是 "localhost"。
Server Port: 服务器的端口号。这里,Elasticsearch 服务运行在 9200 端口上。
Document Path: 请求的文档路径。这里,"/" 表示根目录。
Document Length: 服务器响应的文档长度,本次请求中,响应的文档长度为 542 字节。
Concurrency Level: 同时发送请求的并发数量,本次测试使用了 10 个并发请求。
Time taken for tests: 总共执行测试的时间,本次测试耗时约 1.018 秒。
Complete requests: 完成的请求总数,本次测试执行了 1000 个请求。
Failed requests: 失败的请求总数,本次测试中没有失败的请求。
Write errors: 写入错误的总数,本次测试中没有写入错误。
Total transferred: 总共传输的字节数,本次测试传输了 629,000 字节。
HTML transferred: 传输的 HTML 文档字节数,本次测试传输了 542,000 字节的 HTML 文档。
Requests per second: 平均每秒处理的请求数量,本次测试平均每秒处理了约 982.60 个请求。这是一个重要的性能指标,表示服务器的处理能力。
Time per request: 平均每个请求的响应时间,分为两种情况:10.177 毫秒 (平均响应时间) 和 1.018 毫秒 (平均响应时间,考虑了所有并发请求)。
Transfer rate: 传输速率,以千字节每秒 (KB/s) 为单位。本次测试的传输速率为 603.57 KB/s。
Connection Times (ms): 连接时间统计,包括最小值 (min)、平均值 (mean)、标准差 (+/-sd)、中位数 (median) 和最大值 (max)。
Percentage of the requests served within a certain time (ms): 显示请求在特定响应时间内完成的百分比,例如,50% 的请求在 9 毫秒内完成。
3.2 性能分析说明
本次测试显示了 Elasticsearch 服务的性能。每秒处理约 983 个请求,响应时间平均约 10 毫秒,表明 Elasticsearch 在此测试条件下表现良好。
0% 的请求失败,没有写入错误,说明服务器在这个测试中稳定。
平均响应时间很低,说明 Elasticsearch 能够快速响应查询请求,适用于高吞吐量的应用。
百分位数数据展示了请求在不同响应时间范围内的分布情况。例如,50% 的请求在 9 毫秒内完成,而 95% 的请求在 17 毫秒内完成,这显示了请求的分布情况。
总的来说,这个测试表明 Elasticsearch 在这个配置下能够以高性能运行,适用于需要处理大量查询请求的应用场景。但请注意,性能测试结果可能会因环境和负载不同而有所变化,因此建议进行多轮测试以获取更准确的性能数据。
结论
通过遵循上述步骤,您可以在云服务器上轻松地使用 Docker 安装 Elasticsearch,然后使用 Apache Benchmark 工具进行性能测试。这为您提供了一种快速而可控的方法,以确保您的 Elasticsearch 实例在生产环境中能够满足性能要求。
- 安装 Docker:在云服务器上安装 Docker,这将使您能够轻松部署和管理容器化的应用程序。
- 运行 Elasticsearch 容器:使用 Docker 命令,您可以快速启动 Elasticsearch 容器,选择合适的配置和版本。
- 进行性能测试:使用 Apache Benchmark 工具 (ab) 或其他性能测试工具,可以对您的 Elasticsearch 实例执行性能测试。这有助于评估响应时间、吞吐量和稳定性等性能指标。
- 性能分析:分析测试结果,了解服务器的处理能力、响应时间和资源利用率。这有助于确定是否需要优化配置或扩展硬件资源。
这个流程使您能够在云服务器上快速评估 Elasticsearch 的性能,以确保它能够满足您的应用程序的需求。同时,这也展示了 Docker 在构建和部署容器化应用时的灵活性和便捷性。