
配置 Elasticsearch 服务器 logs
<cluster name>.log
<cluster name>_server.json
假如我在 config/eleasticsearch.yml 文件中把 cluster.name 定义为如下的值:cluster.name: liuxg-cluster那么我们就可以在 logs/ 目录下看到如下的文件:
$ pwd
/Users/liuxg/elastic0/elasticsearch-7.10.0/logs
liuxg:logs liuxg$ ls liuxg-cluster*
liuxg-cluster.log
liuxg-cluster_audit.json
liuxg-cluster_deprecation.json
liuxg-cluster_deprecation.log
liuxg-cluster_index_indexing_slowlog.json
liuxg-cluster_index_indexing_slowlog.log
liuxg-cluster_index_search_slowlog.json
liuxg-cluster_index_search_slowlog.log
liuxg-cluster_server.json
从上面,我们可以看到所有的文件以 liuxg-cluster 开始的文件名。这些日志记录了 elasticsearch 运行的状态。依据不同的日志等级,它会记录不同的事件。
详细阅读,请参阅 https://elasticstack.blog.csdn ... 90556
<cluster name>.log
<cluster name>_server.json
假如我在 config/eleasticsearch.yml 文件中把 cluster.name 定义为如下的值:cluster.name: liuxg-cluster那么我们就可以在 logs/ 目录下看到如下的文件:
$ pwd
/Users/liuxg/elastic0/elasticsearch-7.10.0/logs
liuxg:logs liuxg$ ls liuxg-cluster*
liuxg-cluster.log
liuxg-cluster_audit.json
liuxg-cluster_deprecation.json
liuxg-cluster_deprecation.log
liuxg-cluster_index_indexing_slowlog.json
liuxg-cluster_index_indexing_slowlog.log
liuxg-cluster_index_search_slowlog.json
liuxg-cluster_index_search_slowlog.log
liuxg-cluster_server.json
从上面,我们可以看到所有的文件以 liuxg-cluster 开始的文件名。这些日志记录了 elasticsearch 运行的状态。依据不同的日志等级,它会记录不同的事件。
详细阅读,请参阅 https://elasticstack.blog.csdn ... 90556 收起阅读 »

Elastic:Data tiers 介绍及索引生命周期管理 - 7.10 之后版本
Data tier 也就是数据层。是一个在 7.10 版本的一个新概念。数据层是具有相同数据角色的节点的集合,这些节点通常共享相同的硬件配置文件:
- Content tier (内容层)节点处理诸如产品目录之类的内容的索引和查询负载。
- Hot tier (热层) 节点处理诸如日志或指标之类的时间序列数据的索引负载,并保存你最近,最常访问的数据。
- Warm tier (温层)节点保存的时间序列数据访问频率较低,并且很少需要更新。
- Cold tier (冷层)节点保存时间序列数据,这些数据偶尔会被访问,并且通常不会更新。
详细阅读,请参阅 “Elastic:Data tiers 介绍及索引生命周期管理 - 7.10 之后版本” https://elasticstack.blog.csdn ... 50474
Data tier 也就是数据层。是一个在 7.10 版本的一个新概念。数据层是具有相同数据角色的节点的集合,这些节点通常共享相同的硬件配置文件:
- Content tier (内容层)节点处理诸如产品目录之类的内容的索引和查询负载。
- Hot tier (热层) 节点处理诸如日志或指标之类的时间序列数据的索引负载,并保存你最近,最常访问的数据。
- Warm tier (温层)节点保存的时间序列数据访问频率较低,并且很少需要更新。
- Cold tier (冷层)节点保存时间序列数据,这些数据偶尔会被访问,并且通常不会更新。
详细阅读,请参阅 “Elastic:Data tiers 介绍及索引生命周期管理 - 7.10 之后版本” https://elasticstack.blog.csdn ... 50474 收起阅读 »

社区日报 第1138期 (2020-12-14)
https://segmentfault.com/q/1010000014343913
2、ElasticSearch 索引配置隐私字段
https://blog.csdn.net/Vancl_Wa ... 16012
3、elasticsearch存储聊天消息的最佳实践
https://stackoverflow.com/ques ... earch
编辑:cyberdak
归档:https://ela.st/cn-daily-all
订阅:https://ela.st/cn-daily-sub
沙龙:https://ela.st/cn-meetup
https://segmentfault.com/q/1010000014343913
2、ElasticSearch 索引配置隐私字段
https://blog.csdn.net/Vancl_Wa ... 16012
3、elasticsearch存储聊天消息的最佳实践
https://stackoverflow.com/ques ... earch
编辑:cyberdak
归档:https://ela.st/cn-daily-all
订阅:https://ela.st/cn-daily-sub
沙龙:https://ela.st/cn-meetup 收起阅读 »

在 Kibana 中的四种表格制作方式
- 在 Discover 界面中制作
- 使用 table 可视化进行制作
- 使用 TSVB 来制作
- 使用 Lens 进行制作
在这几种方式中,几种制作最后的结果是不一样的。我们在实际的使用中,需要根据自己的需求来分别进行选择。
详细阅读,请参阅 https://elasticstack.blog.csdn ... 88189
- 在 Discover 界面中制作
- 使用 table 可视化进行制作
- 使用 TSVB 来制作
- 使用 Lens 进行制作
在这几种方式中,几种制作最后的结果是不一样的。我们在实际的使用中,需要根据自己的需求来分别进行选择。
详细阅读,请参阅 https://elasticstack.blog.csdn ... 88189
收起阅读 »

社区日报 第1137期 (2020-12-13)
https://www.twingate.com/blog/ ... gate/
2.如何在Kafka和Elasticsearch探索数据。
https://lenses.io/blog/2020/04 ... -sql/
3.(自备梯子)赛博朋克2077通过Proton兼容层在Linux上运行。
https://twitter.com/Plagman2/s ... 34784
编辑:至尊宝
归档:https://ela.st/cn-daily-all
订阅:https://ela.st/cn-daily-sub
沙龙:https://ela.st/cn-meetup
https://www.twingate.com/blog/ ... gate/
2.如何在Kafka和Elasticsearch探索数据。
https://lenses.io/blog/2020/04 ... -sql/
3.(自备梯子)赛博朋克2077通过Proton兼容层在Linux上运行。
https://twitter.com/Plagman2/s ... 34784
编辑:至尊宝
归档:https://ela.st/cn-daily-all
订阅:https://ela.st/cn-daily-sub
沙龙:https://ela.st/cn-meetup
收起阅读 »

社区日报 第1136期 (2020-12-12)
1.复杂嵌套语句的搜索及优化
https://stackoverflow.com/questions/65237747/elasticsearch-query-by-generic-properties-keywords-and-numeric-values/65243079#65243079
2.Lucene vs Solr vs ElasticSearch
https://anytxt.net/how-to-choose-a-full-text-search-engine/
3.基于ES的问答系统
1.复杂嵌套语句的搜索及优化
https://stackoverflow.com/questions/65237747/elasticsearch-query-by-generic-properties-keywords-and-numeric-values/65243079#65243079
2.Lucene vs Solr vs ElasticSearch
https://anytxt.net/how-to-choose-a-full-text-search-engine/
3.基于ES的问答系统
https://github.com/jetnew/DrFAQ
收起阅读 »
社区日报 第1135期 (2020-12-11)
https://www.javatpoint.com/ela ... cture
2、如何设计可扩展的 Elasticsearch 数据存储的架构
https://www.elastic.co/cn/blog ... scale
3、15分钟介绍ELK(PDF)
http://karunsubramanian.com/wp ... 1.pdf
编辑:铭毅天下
归档:https://ela.st/cn-daily-all
订阅:https://ela.st/cn-daily-sub
沙龙:https://ela.st/cn-meetup
https://www.javatpoint.com/ela ... cture
2、如何设计可扩展的 Elasticsearch 数据存储的架构
https://www.elastic.co/cn/blog ... scale
3、15分钟介绍ELK(PDF)
http://karunsubramanian.com/wp ... 1.pdf
编辑:铭毅天下
归档:https://ela.st/cn-daily-all
订阅:https://ela.st/cn-daily-sub
沙龙:https://ela.st/cn-meetup
收起阅读 »

社区日报 第1134期 (2020-12-10)
https://www.elastic.co/blog/el ... h-eck
2.性能爆表!INFINI Gateway 性能与压力测试结果
https://elasticsearch.cn/article/14174
3.ELK多租户方案
https://mp.weixin.qq.com/s/3n77tXW4jnP_Z64baRFFyA
编辑:金桥
归档:https://ela.st/cn-daily-all
订阅:https://ela.st/cn-daily-sub
沙龙:https://ela.st/cn-meetup
https://www.elastic.co/blog/el ... h-eck
2.性能爆表!INFINI Gateway 性能与压力测试结果
https://elasticsearch.cn/article/14174
3.ELK多租户方案
https://mp.weixin.qq.com/s/3n77tXW4jnP_Z64baRFFyA
编辑:金桥
归档:https://ela.st/cn-daily-all
订阅:https://ela.st/cn-daily-sub
沙龙:https://ela.st/cn-meetup 收起阅读 »

Elasticsearch:Node 介绍 - 7.9 之后版本
详细阅读 https://elasticstack.blog.csdn ... 47372
详细阅读 https://elasticstack.blog.csdn ... 47372 收起阅读 »

深入理解 Dissect ingest processor

社区日报 第1133期 (2020-12-09)
https://ngx.hk/2019/01/07/elas ... .html
2、基于 Go 和 Elasticsearch 构建一个搜索服务
https://maiyang.me/post/2018-0 ... arch/
3、elasticsearch集群如何添加一个datanode节点
https://logz.io/blog/elasticse ... rial/
编辑:wt
归档:https://ela.st/cn-daily-all
订阅:https://ela.st/cn-daily-sub
沙龙:https://ela.st/cn-meetup
https://ngx.hk/2019/01/07/elas ... .html
2、基于 Go 和 Elasticsearch 构建一个搜索服务
https://maiyang.me/post/2018-0 ... arch/
3、elasticsearch集群如何添加一个datanode节点
https://logz.io/blog/elasticse ... rial/
编辑:wt
归档:https://ela.st/cn-daily-all
订阅:https://ela.st/cn-daily-sub
沙龙:https://ela.st/cn-meetup 收起阅读 »

性能爆表!INFINI Gateway 性能与压力测试结果
本文主要是分享下对 INFINI Gateway 的压测过程,使用graphite观测压力测试qps的过程。如有什么错漏的地方,还请多多包涵,不多逼逼,进入正题
硬件配置
主机 | 型号 | CPU | 内存/带宽 | 系统 |
---|---|---|---|---|
172.31.18.148(gateway1) | aws c5a.8xlarge | x86 32核 | 64G/10G | Ubuntu 20.04.1 LTS |
172.31.24.102(gateway2) | aws c6g.8xlarge | arm 32核 | 64G/10G | Ubuntu 20.04.1 LTS |
172.31.23.133(test) | aws c5a.8xlarge | x86 32核 | 64G/10G | Ubuntu 20.04.1 LTS |
测试准备
系统调优(所有节点)
修改系统参数
vi /etc/sysctl.conf
net.netfilter.nf_conntrack_max = 262144
net.nf_conntrack_max = 262144
net.ipv4.ip_forward = 1
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.ip_nonlocal_bind=1
fs.file-max=10485760
net.core.rmem_max=4194304
net.core.wmem_max=4194304
net.ipv4.tcp_tw_reuse=1
net.ipv4.tcp_timestamps=1
net.core.somaxconn=32768
net.ipv4.tcp_syncookies=1
net.ipv4.tcp_max_syn_backlog=65535
net.ipv4.tcp_synack_retries=0
net.core.netdev_max_backlog=65535
net.core.rmem_max=4194304
net.core.wmem_max=4194304
#修改默认的本地端口范围
net.ipv4.ip_local_port_range='1024 65535'
net.ipv4.tcp_tw_reuse=1
net.ipv4.tcp_timestamps=1
保存并执行 sysctl -p
修改用户单进程的最大文件数,
用户登录时生效
echo '* soft nofile 1048576' >> /etc/security/limits.conf
echo '* hard nofile 1048576' >> /etc/security/limits.conf
用户单进程的最大文件数 当前会话生效
ulimit -n 1048576
安装docker,graphite(gateway 安装)
sudo apt-get update
sudo apt-get install docker.io
docker run -d --name graphite --restart=always -p 80:80 -p 2003-2004:2003-2004 -p 2023-2024:2023-2024 -p 8125:8125/udp -p 8126:8126 graphiteapp/graphite-statsd
下载安装gateway
下载最新版infini-gateway(https://github.com/medcl/infini-gateway/releases),下载后无需安装即可使用
修改配置文件
解压后将gateway.yml配置文件修改成如下:
path.data: data
path.logs: log
entry:
- name: es_gateway #your gateway endpoint
enabled: true
router: not_found #configure your gateway's routing flow
network:
binding: 0.0.0.0:8000
# skip_occupied_port: false
reuse_port: true #you can start multi gateway instance, they share same port, to full utilize system's resources
tls:
enabled: false #if your es is using https, the gateway entrypoint should enable https too
flow:
- name: not_found #testing flow
filter:
- name: not_found
type: echo
parameters:
str: '{"message":"not found"}'
repeat: 1
- name: cache_first
filter: #comment out any filter sections, like you don't need cache or rate-limiter
- name: get_cache_1
type: get_cache
parameters:
pass_patterns: ["_cat","scroll", "scroll_id","_refresh","_cluster","_ccr","_count","_flush","_ilm","_ingest","_license","_migration","_ml","_rollup","_data_stream","_open", "_close"]
# hash_factor:
# header:
# - "*"
# path: true
# query_args:
# - id
# must_cache:
# method:
# - GET
# path:
# - _search
# - _async_search
- name: rate_limit_1
type: rate_limit
parameters:
message: "Hey, You just reached our request limit!"
rules: #configure match rules against request's PATH, eg: /_cluster/health, match the first rule and return
- pattern: "/(?P<index_name>medcl)/_search" #use index name, will match: /medcl/_search, with limit medcl with max_qps ~=3
max_qps: 3 #setting max qps after match
group: index_name #use regex group name to extract the throttle bucket name
- pattern: "/(?P<index_name>.*?)/_search" #use regex pattern to match index, will match any /$index/_search, and limit each index with max_qps ~=100
max_qps: 100
group: index_name
- name: elasticsearch_1
type: elasticsearch
parameters:
elasticsearch: default #elasticsearch configure reference name
max_connection: 1000 #max tcp connection to upstream, default for all nodes
max_response_size: -1 #default for all nodes
balancer: weight
discovery:
enabled: true
- name: set_cache_1
type: set_cache
- name: request_logging
filter:
- name: request_header_filter
type: request_header_filter
parameters:
include:
CACHE: true
- name: request_logging_1
type: request_logging
parameters:
queue_name: request_logging
router:
- name: default
tracing_flow: request_logging #a flow will execute after request finish
default_flow: cache_first
rules: #rules can't be conflicted with each other, will be improved in the future
- id: 1 # this rule means match every requests, and sent to `cache_first` flow
method:
- "*"
pattern:
- /
flow:
- cache_first # after match, which processing flow will go through
- name: not_found
default_flow: not_found
elasticsearch:
- name: default
enabled: false
endpoint: http://localhost:9200 # if your elasticsearch is using https, your gateway should be listen on as https as well
version: 7.6.0 #optional, used to select es adaptor, can be done automatically after connect to es
index_prefix: gateway_
basic_auth: #used to discovery full cluster nodes, or check elasticsearch's health and versions
username: elastic
password: Bdujy6GHehLFaapFI9uf
statsd:
enabled: true
host: 127.0.0.1
port: 8125
namespace: gateway.
modules:
- name: elastic
enabled: false
elasticsearch: default
init_template: true
- name: pipeline
enabled: true
runners:
- name: primary
enabled: true
max_go_routine: 1
threshold_in_ms: 0
timeout_in_ms: 5000
pipeline_id: request_logging_index
pipelines:
- name: request_logging_index
start:
joint: json_indexing
enabled: false
parameters:
index_name: "gateway_requests"
elasticsearch: "default"
input_queue: "request_logging"
num_of_messages: 1
timeout: "60s"
worker_size: 6
bulk_size: 5000
process: []
queue:
min_msg_size: 1
max_msg_size: 500000000
max_bytes_per_file: 50*1024*1024*1024
sync_every_in_seconds: 30
sync_timeout_in_seconds: 10
read_chan_buffer: 0
开始测试
本文中使用的压测工具http-loader,见附件
为了能充分利用服务器多核资源,测试的时候直接启用多个进程
压测x86 gateway服务器
在gateway1上启动五个gateway
./gateway-amd64&
./gateway-amd64&
./gateway-amd64&
./gateway-amd64&
./gateway-amd64&
测试gateway返回内容
curl http://172.31.18.148:8000
输出
{"message":"not found"}
在gateway2,test机上同时执行(1000个并发压测10分钟)
./http-loader -c 1000 -d 600 http://172.31.18.148:8000
观测gateway1服务器指标
使用 htop
查看系统负载情况,如下图:
这里我们看到cpu基本跑满,说明gateway已经压到极限了
使用iftop
查看系统网络流量情况,如下图:
使用netstat,ss查看tcp连接数,如下图:
sudo netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
ss -s
查看graphite statsd qps指标,如下图:
压测arm gateway服务器
在gateway2上启动五个gateway
./gateway-arm64&
./gateway-arm64&
./gateway-arm64&
./gateway-arm64&
./gateway-arm64&
测试gateway返回内容
curl http://172.31.18.148:8000
输出
{"message":"not found"}
在gateway1,test机上同时执行(1000个并发压测10分钟)
./http-loader -c 1000 -d 600 http://172.31.18.148:8000
观测gateway2服务器指标
使用htop
查看系统负载情况,如下图:
使用iftop
查看系统网络流量情况,如下图:
使用netstat,ss查看tcp连接数,如下图:
sudo netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
ss -s
查看graphite statsd qps指标,如下图:
这里我们可以看到qps基本稳定在125万的qps
压测总结
单机压测x86架构机器上能达到95多万的qps, arm架构机器上能达到125万的qps,可见性能还是非常优秀的。由于文章篇幅原因,gateway单进程的压测就不贴了,有兴趣的同学可以自己下载测试下。
本文主要是分享下对 INFINI Gateway 的压测过程,使用graphite观测压力测试qps的过程。如有什么错漏的地方,还请多多包涵,不多逼逼,进入正题
硬件配置
主机 | 型号 | CPU | 内存/带宽 | 系统 |
---|---|---|---|---|
172.31.18.148(gateway1) | aws c5a.8xlarge | x86 32核 | 64G/10G | Ubuntu 20.04.1 LTS |
172.31.24.102(gateway2) | aws c6g.8xlarge | arm 32核 | 64G/10G | Ubuntu 20.04.1 LTS |
172.31.23.133(test) | aws c5a.8xlarge | x86 32核 | 64G/10G | Ubuntu 20.04.1 LTS |
测试准备
系统调优(所有节点)
修改系统参数
vi /etc/sysctl.conf
net.netfilter.nf_conntrack_max = 262144
net.nf_conntrack_max = 262144
net.ipv4.ip_forward = 1
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.ip_nonlocal_bind=1
fs.file-max=10485760
net.core.rmem_max=4194304
net.core.wmem_max=4194304
net.ipv4.tcp_tw_reuse=1
net.ipv4.tcp_timestamps=1
net.core.somaxconn=32768
net.ipv4.tcp_syncookies=1
net.ipv4.tcp_max_syn_backlog=65535
net.ipv4.tcp_synack_retries=0
net.core.netdev_max_backlog=65535
net.core.rmem_max=4194304
net.core.wmem_max=4194304
#修改默认的本地端口范围
net.ipv4.ip_local_port_range='1024 65535'
net.ipv4.tcp_tw_reuse=1
net.ipv4.tcp_timestamps=1
保存并执行 sysctl -p
修改用户单进程的最大文件数,
用户登录时生效
echo '* soft nofile 1048576' >> /etc/security/limits.conf
echo '* hard nofile 1048576' >> /etc/security/limits.conf
用户单进程的最大文件数 当前会话生效
ulimit -n 1048576
安装docker,graphite(gateway 安装)
sudo apt-get update
sudo apt-get install docker.io
docker run -d --name graphite --restart=always -p 80:80 -p 2003-2004:2003-2004 -p 2023-2024:2023-2024 -p 8125:8125/udp -p 8126:8126 graphiteapp/graphite-statsd
下载安装gateway
下载最新版infini-gateway(https://github.com/medcl/infini-gateway/releases),下载后无需安装即可使用
修改配置文件
解压后将gateway.yml配置文件修改成如下:
path.data: data
path.logs: log
entry:
- name: es_gateway #your gateway endpoint
enabled: true
router: not_found #configure your gateway's routing flow
network:
binding: 0.0.0.0:8000
# skip_occupied_port: false
reuse_port: true #you can start multi gateway instance, they share same port, to full utilize system's resources
tls:
enabled: false #if your es is using https, the gateway entrypoint should enable https too
flow:
- name: not_found #testing flow
filter:
- name: not_found
type: echo
parameters:
str: '{"message":"not found"}'
repeat: 1
- name: cache_first
filter: #comment out any filter sections, like you don't need cache or rate-limiter
- name: get_cache_1
type: get_cache
parameters:
pass_patterns: ["_cat","scroll", "scroll_id","_refresh","_cluster","_ccr","_count","_flush","_ilm","_ingest","_license","_migration","_ml","_rollup","_data_stream","_open", "_close"]
# hash_factor:
# header:
# - "*"
# path: true
# query_args:
# - id
# must_cache:
# method:
# - GET
# path:
# - _search
# - _async_search
- name: rate_limit_1
type: rate_limit
parameters:
message: "Hey, You just reached our request limit!"
rules: #configure match rules against request's PATH, eg: /_cluster/health, match the first rule and return
- pattern: "/(?P<index_name>medcl)/_search" #use index name, will match: /medcl/_search, with limit medcl with max_qps ~=3
max_qps: 3 #setting max qps after match
group: index_name #use regex group name to extract the throttle bucket name
- pattern: "/(?P<index_name>.*?)/_search" #use regex pattern to match index, will match any /$index/_search, and limit each index with max_qps ~=100
max_qps: 100
group: index_name
- name: elasticsearch_1
type: elasticsearch
parameters:
elasticsearch: default #elasticsearch configure reference name
max_connection: 1000 #max tcp connection to upstream, default for all nodes
max_response_size: -1 #default for all nodes
balancer: weight
discovery:
enabled: true
- name: set_cache_1
type: set_cache
- name: request_logging
filter:
- name: request_header_filter
type: request_header_filter
parameters:
include:
CACHE: true
- name: request_logging_1
type: request_logging
parameters:
queue_name: request_logging
router:
- name: default
tracing_flow: request_logging #a flow will execute after request finish
default_flow: cache_first
rules: #rules can't be conflicted with each other, will be improved in the future
- id: 1 # this rule means match every requests, and sent to `cache_first` flow
method:
- "*"
pattern:
- /
flow:
- cache_first # after match, which processing flow will go through
- name: not_found
default_flow: not_found
elasticsearch:
- name: default
enabled: false
endpoint: http://localhost:9200 # if your elasticsearch is using https, your gateway should be listen on as https as well
version: 7.6.0 #optional, used to select es adaptor, can be done automatically after connect to es
index_prefix: gateway_
basic_auth: #used to discovery full cluster nodes, or check elasticsearch's health and versions
username: elastic
password: Bdujy6GHehLFaapFI9uf
statsd:
enabled: true
host: 127.0.0.1
port: 8125
namespace: gateway.
modules:
- name: elastic
enabled: false
elasticsearch: default
init_template: true
- name: pipeline
enabled: true
runners:
- name: primary
enabled: true
max_go_routine: 1
threshold_in_ms: 0
timeout_in_ms: 5000
pipeline_id: request_logging_index
pipelines:
- name: request_logging_index
start:
joint: json_indexing
enabled: false
parameters:
index_name: "gateway_requests"
elasticsearch: "default"
input_queue: "request_logging"
num_of_messages: 1
timeout: "60s"
worker_size: 6
bulk_size: 5000
process: []
queue:
min_msg_size: 1
max_msg_size: 500000000
max_bytes_per_file: 50*1024*1024*1024
sync_every_in_seconds: 30
sync_timeout_in_seconds: 10
read_chan_buffer: 0
开始测试
本文中使用的压测工具http-loader,见附件
为了能充分利用服务器多核资源,测试的时候直接启用多个进程
压测x86 gateway服务器
在gateway1上启动五个gateway
./gateway-amd64&
./gateway-amd64&
./gateway-amd64&
./gateway-amd64&
./gateway-amd64&
测试gateway返回内容
curl http://172.31.18.148:8000
输出
{"message":"not found"}
在gateway2,test机上同时执行(1000个并发压测10分钟)
./http-loader -c 1000 -d 600 http://172.31.18.148:8000
观测gateway1服务器指标
使用 htop
查看系统负载情况,如下图:
这里我们看到cpu基本跑满,说明gateway已经压到极限了
使用iftop
查看系统网络流量情况,如下图:
使用netstat,ss查看tcp连接数,如下图:
sudo netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
ss -s
查看graphite statsd qps指标,如下图:
压测arm gateway服务器
在gateway2上启动五个gateway
./gateway-arm64&
./gateway-arm64&
./gateway-arm64&
./gateway-arm64&
./gateway-arm64&
测试gateway返回内容
curl http://172.31.18.148:8000
输出
{"message":"not found"}
在gateway1,test机上同时执行(1000个并发压测10分钟)
./http-loader -c 1000 -d 600 http://172.31.18.148:8000
观测gateway2服务器指标
使用htop
查看系统负载情况,如下图:
使用iftop
查看系统网络流量情况,如下图:
使用netstat,ss查看tcp连接数,如下图:
sudo netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
ss -s
查看graphite statsd qps指标,如下图:
这里我们可以看到qps基本稳定在125万的qps
压测总结
单机压测x86架构机器上能达到95多万的qps, arm架构机器上能达到125万的qps,可见性能还是非常优秀的。由于文章篇幅原因,gateway单进程的压测就不贴了,有兴趣的同学可以自己下载测试下。
收起阅读 »
极限网关 INFINI Gateway 初体验
下载
下载地址:https://github.com/medcl/infini-gateway/releases
找到当前最新版1.1.0_SNAPSHOT
根据自己的操作系统环境选择相应的包下载,本人用的是Macbook,选择了GATEWAY-darwin64.tar.gz
#切换该路径下(路径自定)
cd /Users/shiyang/code/elastic/gateway
#下载
wget https://github.com/medcl/infin ... ar.gz
#下载完后解压
tar -zxvf GATEWAY-darwin64.tar.gz
#解压后能看到两个新文件,一个可执行二进制文件,一个yml配置文件
ls
#gateway-darwin64 gateway.yml
安装部署
在run之前需要先运行elastisearch,否则会报错,如图所示:
接下来先启动es集群(如果你本地还没有部署es,建议先参考官网的es安装教程下载部署)
本机用的es版本为7.9.0,如下图表示启动es成功:
接下来再启动gateway,yml配置文件可以先默认,后续可根据需要再修改。
#启动
./gateway-darwin64
启动成功如下图所示:
成功启动后,我们就可以直接访问gateway了。
curl http://0.0.0.0:8000
到此,gateway就算本地部署完毕了。
是不是很简单?嗯,下载即使用,简单方便。
(接下来可以试用一下gateway的特性了。将发布在下一篇文章。)
下载
下载地址:https://github.com/medcl/infini-gateway/releases
找到当前最新版1.1.0_SNAPSHOT
根据自己的操作系统环境选择相应的包下载,本人用的是Macbook,选择了GATEWAY-darwin64.tar.gz
#切换该路径下(路径自定)
cd /Users/shiyang/code/elastic/gateway
#下载
wget https://github.com/medcl/infin ... ar.gz
#下载完后解压
tar -zxvf GATEWAY-darwin64.tar.gz
#解压后能看到两个新文件,一个可执行二进制文件,一个yml配置文件
ls
#gateway-darwin64 gateway.yml
安装部署
在run之前需要先运行elastisearch,否则会报错,如图所示:
接下来先启动es集群(如果你本地还没有部署es,建议先参考官网的es安装教程下载部署)
本机用的es版本为7.9.0,如下图表示启动es成功:
接下来再启动gateway,yml配置文件可以先默认,后续可根据需要再修改。
#启动
./gateway-darwin64
启动成功如下图所示:
成功启动后,我们就可以直接访问gateway了。
curl http://0.0.0.0:8000
到此,gateway就算本地部署完毕了。
是不是很简单?嗯,下载即使用,简单方便。
(接下来可以试用一下gateway的特性了。将发布在下一篇文章。) 收起阅读 »

社区日报 第1132期 (2020-12-08)
https://www.jianshu.com/p/429e563bb33e
2、ES中9款JavaScript Query构造库推荐。
https://openbase.io/categories ... aries
3、File Beat+ELK日志入门教程。
https://www.javainuse.com/elas ... t-elk
编辑:叮咚光军
归档:https://ela.st/cn-daily-all
订阅:https://ela.st/cn-daily-sub
沙龙:https://ela.st/cn-meetup
https://www.jianshu.com/p/429e563bb33e
2、ES中9款JavaScript Query构造库推荐。
https://openbase.io/categories ... aries
3、File Beat+ELK日志入门教程。
https://www.javainuse.com/elas ... t-elk
编辑:叮咚光军
归档:https://ela.st/cn-daily-all
订阅:https://ela.st/cn-daily-sub
沙龙:https://ela.st/cn-meetup 收起阅读 »
