Arganzheng's Blog

stay hungry, stay foolish

Kafka offset lag监控

利用NOAH的自定义脚本监控功能,写了一个脚本监控kafka的consumer offset lag,如果大于10000就报警。 脚本如下: #!/bin/bash old_IFS=$IFS IFS=$'\n' # get all the consumer group of kafka group_list=`/home/work/kafka/bin/kafka-consumer-groups.sh --bootstrap-server localhost:8092 --list` for group in $group_list; do # get the offset lag of each group group_info=`/home/work/...

kafka broker间歇出现CLOSE_WAIT问题

使用kafka有一段时间了,偶尔会出现一些问题,比如Kafka集群的某个broker会突然卡住,排除发现改broker有大量的CLOSE_WAIT状态,而且Recv-Q有数据没有处理,猜测可能是client发送了请求数据,broker还没处理完,client退出了,broker再也不能处理完那些请求数据,所以不能发送FIN。 这个情况已经出现过几次,重启就好了,但是为什么会出现这么多的CLOSE_WAIT原因一直未明。比较麻烦的是,该broker与ZK的heart beat并没有失败,所以ZK并不认为其挂掉了,因此也不会触发HA。 Kafka还有一个问题很蛋疼,每一个Consumer或者Broker的增加或者减少都会触发 Consumer Rebalance...

图存储引擎学习笔记

存储和索引 有两种存储方式,一种是Index Free Adjacency,不依赖于索引,直接存储关联的物理位置(内存指针,磁盘文件偏移量),这类的产品有neo4j, Titian, OrientDB,Graph Engine(@Microsoft), etc。第二种是Index-Based Adjacency,使用各种索引实现图的检索功能,这类的产品有 FlockDB(@Twitter), Unicore & TAO(@Facebook),3. ArangoDB, etc.。 关于这两类存储方式的PK,可以参见Index Free Adjacency or Hybrid Indexes for Graph Databases。 简单来说,Index ...

抓取学习笔记

知识图谱的很重要的原始数据来源还是来自于网站抓取的数据,网站抓取器就是我们常说的Spider。 在互联网上爬来爬去,发现链接,抓取网页,这就是Spider整天做的事情。听起来很简单,但是实际上是困难重重的。 Spider有两个核心任务:选链调度 和 网页抓取。 Spider面临的主要问题有: 压力计算、控制、流量分配: 如何提升对外抓取友好度,减少被封禁。如何评估网站可承受的压力。如何在多用户之间,多种不同的抓取需求之间进行流量分配。 抓取流量有限,需要根据预测合理调度,使收益最大化: 链接发现:需要预测优先CHK哪些页面可能发现更多更好的新链接。 待抓分级:需要在抓取之前预测...

使用supervisor进行进程监管

supervisor是一个python写的进程管理工具,可以监管进程的运行。它提供了进程挂掉自动重启功能,并且还有一个管理页面,可以看到监管的程序的运行状态,也可以直接在整个页面上对进程进行重启、关闭、查看日志等操作。 安装 安装比较简单,直接看官网,这里不赘述了。 使用方法 supervisor的主要配置入口在supervisord.conf: [unix_http_server] file=/home/work/rdbin/kg/supervisor/run/supervisor.sock ; (the path to the socket file) ;chmod=0700 ; socked file mode (...

ElasticSearch存储相关

版本 线上使用的是1.7.1版本,最新的ES版本是5.0,这个版本在功能和性能上做了很大的改进(Elasticsearch 5.0 新版本的特性与改进),所以我们也直接使用这个版本。 风险是这个版本相对比较新,是十一月中旬才release的版本,可能会有一些不稳定,资料也会比较少。另外,因为太新,很多第三方插件,如head,bigdesk,等,都还没有追上。 Nodes、Index、Type、Shards & Replicas 1、Index or Type 根据ES的特性 Index VS Type 和 General recommendations,不同垂类还是建立在不同的索引下比较合适。 NO...

卓有成效的程序员——Mac篇

作为一个资深程序猿,在linux、windows和mac下都进行过相当长的一段开发时间,是时候总结一下mac下的一些高效工作Tips了。 离线文档 有时候有些文档需要翻墙或者访问很慢,你可以将整个文档离线下载下来,在本地阅读。 登录能翻墙的服务器,使用wget的mirror功能下载整个网站: wget -m --no-check-certificate --convert-links https://www.graphengine.io/ NOTES 因为我们要下载的网站是https的,所以要增加--no-check-certificate参数,否则会报错。 convert-links可以把网页的链接转成相对路径,如/img/overview...

过载保护

系统过载及其危害 系统过载就是当前负载已经超过了系统的最大处理能力。例如,系统每秒能够处理的请求是100个,但实际每秒的请求量却是1000个,就可以判定系统出现了过载。 通常可以用QPS、请求处理的平均时延等去评估系统处理能力,系统瓶颈指系统中最先接近极限的资源,一般系统资源包括CPU,内存,IO。 过载的出现,会导致部分服务不可用,如果处置不当,极有可能引起服务完全不可用,乃至雪崩。 如何进行过载保护 如何进行过载保护,有如下一些策略: 1. 做好容量规划 & 线性扩容(能支持弹性扩缩容最好) 最简单也是最基本的,在系统部署上线之前,要预估好线上请求的峰值,预估好系统的处理能力,留有一定的buffer。另外,系统要能够支持线性扩容(核心关键是...

Git学习笔记

公司已经全面切换Git,我们的新项目刚好作为组内的第一个尝鲜项目。其实也用过Github一段时间了,对Git也不能说是完全小白。只是以前基本都是一个人作战,现在是多个人合作,刚好趁这个机会总结一下,让团队其他同事可以通过这篇文章快速的切换到Git来。 Git基础 1.1 Git配置 Git有三个级别的配置文件,分别是: 版本库级别的配置文件: 工程目录下, 使用git config -e打开编辑 全局配置文件: 用户主目录下, 使用git config -e --global打开编辑 系统级配置文件: /etc目录下,使用git config -e --system打开编辑 命令git config可以用于读取和更...

搜索引擎中的相关性和排序截断

一般来说,检索需要解决两个问题: 召回:matching 排序和截断: ranking 召回就是使用经典的倒排索引,从query词检索出相关的文档,文档是否匹配query词。但是这些文档哪些在前哪些在后呢?这就涉及到排序和截断的问题了,这是一个ranking问题,这往往是搜索引擎最具有差异性,也是最核心的部分(比如Google的PageRank算法成就了伟大的谷歌公司)。 常见的ranking scheme有: tf-idf: 最经典的ranking算法 Okapi BM25: tf-idf的变种 PageRank: 大名鼎鼎的Google Ranking算法 这里我们只介绍最经典的TF-IDF模式。 TF-IDF TF: ...

×