性能优化:zabbix性能优化

Zabbix性能优化概述

造成zabbix性能下降的因素如表所示

因素

数据库大小

巨大

适应内存大小

触发器表达式的复杂程度

Max()min()avg()

Last()nodata()

数据收集方法

轮询

Trapping

数据类型

文本,字符串

数值

前端用户数量

 

 

 

 

 

 

 

 

 

主机数量也是影响性能的主要因素

 

主机数量(台)

性能(NVPS)

每个主机有60个items

每分钟更新一次

10

10

100

100

1000

1000

每个主机有600个items

每分钟更新一次

10

10

100

1000

1000

10000

 

 

 

 

 

 


zabbix性能低下的表现

1.    zabbix队列有太多被延迟的item,可以通过administration-queue查看

2.    zabbix绘图中经常出现断图,一些item没有数据

3.    带有nodata()函数的触发器出现flase

4.    前端页面无响应,或者响应慢

解决办法如下:

1.    不要使用默认的模板,应该自己定制模板

2.    数据库调优

3.    架构优化,如果使用分布式,各服务器功能独立

4.    Items、trigger调优

5.    更换更好的硬件

Zabbix性能优化的原则

1、确保zabbix内部组件性能处于被监控状态(调优的基础!)

2、使用硬件性能足够好的服务器

3、不同角色分开,使用各自独立的服务器

4、使用分布式部署

5、调整MySQL性能

6、调整Zabbix自身配置

Zabbix性能优化的依据

对xxx进行的监控,选择xxx的监控模板,如图

看到如图所示的内部监控情况

查看等待队列

查看详情

等待队列越来越多,说明性能越来越差

NVPS计算方法

NVPS是PHP语言实现的,文件位于include/func.inc.php

SELECT round(SUM(1.0/i.delay),2) AS qps FROM items i,hosts h WHERE i.status='0' AND i.hostid=h.hostid AND h.status='0' AND i.delay<>0; 

配置文件的参数优化

调整zabbix参数(/etc/zabbix/zabbix_server.conf)

StartPollers=160

StartPollersUnreacheable=80

StartTrappers=20

StartPingers=100

StartDiscoverers=120

Cachesize=1024M

startDBSyncers=16

HistoryCacheSize-1024M

TrendCacheSize=1024M

HIstoryTextCacheSize-512M

重启zabbix_server

Zabbix的架构优化

Zabbix的架构分为三种

Server/agent

Server/node/agent

Server/proxy/agent

Item工作模式及trigger优化

Zabbix中的item默认工作是被动模式,可以通过设置主动模式来提高server的性能

Tigger中正则表达式函数last()nodata()的速度是最快的,Min(),max().avg()是最慢的,尽量使用速度快的函数

Zabbix数据库优化

Zabbix数据库优化

1.    对数据库软件本身的优化,采用更高性能的数据库版本

2.    对数据库本身的参数进行调优

3.    对zabbix数据库结构进行优化,进行分表操作,会最大程度提高zabbix的数据库性能,在分表的时候,需要关闭housekeeper

4.    在zabbix_server.conf中的logshowqueries参数是关于慢查询的设置,将其设置为1000,开启这个参数对慢查询继续记录,方便调优配置

5.  对zabbix的工作机制和各种process的作用要了解,对zabbix的数据库表结构也要有比较好的理解。

6.    对数据库优化(在32G内存的服务器中)

[client]
port = 3306
socket = /tmp/mysql.sock

[mysqld]
port = 3306
socket = /tmp/mysql.sock

server-id = 1

表示是本机的序号为1

max_allowed_packet = 32M
接受的数据包大小;

max_heap_table_size =128 8M
 定义了用户可以创建的内存表(memory table)的大小。

read_rnd_buffer_size = 512K
 MySQL的随机读缓冲区大小。

sort_buffer_size = 16

 MySQL执行排序使用的缓冲大小。

join_buffer_size = 16

 联合查询操作所能使用的缓冲区大小

query_cache_size = 4096M
MySQL的查询缓冲大小

query_cache_limit = 4M

指定单个查询能够使用的缓冲区大小,默认1M

innodb_open_files =2048

nnodb能打开的表的数据,如果库里的表特别多的情况,请增加这个。这个值默认是300

innodb_buffer_pool_size = 10G

nnoDB使用一个缓冲池来保存索引和原始数据
innodb_thread_concurrency = 16
 默认设置为 0,表示不限制并发数,

 [mysqldump]
quick
max_allowed_packet = 16M #服务器发送和接受的最大包长度

[myisamchk]
key_buffer_size = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M

  

posted @ 2017-11-28 18:50  活的潇洒80  阅读(5101)  评论(0编辑  收藏  举报