Redis慢查询日志ITeye - 威尼斯人

Redis慢查询日志ITeye

2019-01-10 16:09:31 | 作者: 从寒 | 标签: 查询,日志,时刻 | 浏览: 2090

条件

一个线程将一个txt中140M的数据刺进到redis的hashset中,一起我开另一个线程1秒钟一次的从string中获取数据,一起记载下获取时刻,假如获取string的时刻距离太大,阐明堵塞产生了。



 

读取string的线程被Hashset堵塞了6s之多,很恐惧,这个就归于典型的慢查询,它的慢公然堵塞了其他client

 

 

原因

redis是单线程的,假如是这么大数据量的刺进,会堵塞其他指令的履行。所以在参加这种特别事务的时分应该要注意。

一起,太大数据两的Hset有可能会导致超时的状况,这回比较丧命。

 

 

解决方案

1. 将140M的数据拆分红14个10M的数据,优点有两个,榜首削减Hset的时刻,第二是尽量不堵塞其他线程操作数据,不过要改代码。

2. redis做主从,将读写分脱离,这样读写的压力都比较均衡,可是很多的Hset仍是会堵塞写数据库的其他指令。

3. 一起运用这两种办法

4. 专门开一个redis来存储缓存,将这块缓存数据分脱离来,慢就慢,自己办理自己的数据,为了确保主redis不出问题。

 

 

慢查询日志

为了找到哪些查询被堵塞了,能够发动慢查询日志

 

界说

1. Slow log 是 Redis 用来记载查询履行时刻的日志体系。

2. 查询履行时刻指的是不包括像客户端呼应(talking)、发送回复等 IO 操作,而单单是履行一个查询指令所消耗的时刻。

3. 别的,slow log 保存在内存里边,读写速度非常快,因而你能够放心肠运用它,不用忧虑由于敞开 slow log 而危害 Redis 的速度。

 

设置slowlog

能够经过改写 redis.conf 文件或许用 CONFIG GET 和 CONFIG SET 指令对它们动态地进行修正。

 

slowlog-log-slower-than:对履行时刻大于多少微秒(microsecond,1秒 = 1,000,000 微秒)的查询进行记载

 

slowlog-max-len:它决议 slow log 最多能保存多少条日志, slow log 自身是一个 FIFO 行列,当行列巨细超越 slowlog-max-len 时,最旧的一条日志将被删去,而最新的一条日志参加到 slow log ,以此类推。

 

# The following time is expressed in microseconds, so 1000000 is equivalent
# to one second. Note that a negative number disables the slow log, while
# a value of zero forces the logging of every command.
slowlog-log-slower-than 0
# There is no limit to this length. Just be aware that it will consume memory.
# You can reclaim memory used by the slow log with SLOWLOG RESET.
slowlog-max-len 10

 

运转作用



 

版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表威尼斯人立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章

阅读排行

  • 1

    Redis慢查询日志ITeye

    查询,日志,时刻
  • 2

    数据库杂谈ITeye

    如下,句子,函数
  • 3
  • 4
  • 5
  • 6

    MongoDBITeye

    文档,测验,调集
  • 7

    RAC的Diskgroup重建ITeye

    磁盘,重建,数据库
  • 8

    Switch to UTFITeye

    编码,设置,文件
  • 9

    pl/sql使用之使用utlITeye

    文件,办法,输出
  • 10