|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
用java开发web只要两本书:一本是关于java基础的,一本是关于jsp、servlet的就可以了。开发周期长,我就来讲句题外话,现在有很多思想都是通过java来展现。一台Redis服务器在很短的工夫里损耗了几十个G的内存,终极由于SWAP而宕机。由于这台服务器的社会背景对照庞大,以是一时没法判别犯法怀疑人究竟是谁。
最入手下手的直觉是以为一定有人保留了大致积的数据,因而成绩就酿成了找出哪些键占用的空间对照年夜,DBA同事用了redis-rdb-tools等工具来剖析数据文件。惋惜的是固然找到了一些大致积的键,但终极都扫除了怀疑,成绩仿佛堕入了僵局。
在被直觉带进逝世胡同以后,我们入手下手调剂查询拜访的角度:即使一个键自己占用的空间其实不年夜,可是假如不异形式的键数目良多的话,那末算计起来一样会占用大批空间,因而成绩就酿成了找出哪些不异形式的键占用的空间对照年夜。此次我不想用甚么工具,而是盘算在测试服务器上一边删除可疑键一边检察内存变更情形:- shell>/path/to/redis-clikeysfoo:*|xargs/path/to/redis-clidel
复制代码 悲催的是一运转这个命令服务器就挂了!由于数据太多了,以是KEYS受不了。此时应当利用SCAN,它有游标的观点,每次迭代只触及很少的数据。
间接在命令利用用SCAN有些贫苦,因而我用了PHP:- <?php$redis=newRedis();$redis->setOption(Redis::OPT_SCAN,Redis::SCAN_RETRY);$match=foo:*;$count=10000;while($keys=$redis->scan($it,$match,$count)){$redis->del($keys);}?>
复制代码 在删除的同时注重监控内存变更情形,就可以确认成绩了:- shell>watch-d-n1/path/to/redis-cliinfo|grepmemory
复制代码 至于可疑键的猎取,我是瞎蒙的,复杂经由过程MONITOR大概SCAN猎取采样数据便可,别的今后案例看,监控键总数的变更幅度是很主要的,从INFO里能拿到它。
先说优点,首先和C,C++这些语言比起来,java很简单,去掉指针的java,非常好理解,自动垃圾回收机制也很好,自从JDK1.5推出以后,性能上又有了很大提高。 |
|