这几天搭建 elasticsearch 集群做日志分析,终于有机会可以实际跑一下 skyline 的效果。不过比较麻烦的事情是,skyline 是一个比较完备的系统而不是插件,要求我们把数据通过 msgpack 发过去存到 redis 里。这是个很没有道理的做法,早在去年刚看到这个项目的时候我就在博客里写下了愿景是应该用 elasticsearch 替换掉 redis。等了这么久没等到,干脆就自己动手实现。修改后,skyline 其余的程序完全可以直接扔掉,只留下这一个脚本定时运行就够了:

阅读更多

简介

同样作为时间序列存储的 rrdtool 和 graphite,都偏重在预测算法,也就是说根据现有数据推测下一个数据应该是多少;而 skyline 则是根据现有数据统计最新数据是否异常

阅读更多

正向代理的概念

正向代理,也就是通常所说的代理,它的工作原理就像一个跳板。

简单的说,我是一个用户,我访问不了某网站,但是我能访问一个代理服务器,这个代理服务器,它能访问那个我不能访问的网站。于是我先连上代理服务器,告诉它我需要那个无法访问网站的内容,代理服务器去取回来,然后返回给我。从网站的角度,只在代理服务器来取内容的时候有一次记录。有时候并不知道是用户的请求,也隐藏了用户的资料,这取决于代理告不告诉网站。

阅读更多

Apache可以直接使用2.0版本产品线。针对Apache的优化主要是针对httpd.conf的优化,当然还有其他地方,如果特别留意的话,网上常有专家惊呼“居然这么多人忽略xxxx处的优化”等等,实际情况也确实如此,因为优化的地方实在太多了,httpd.conf只能做一个出发点。即便如此如果仅仅使用httpd.conf出厂默认值的话还是令人痛心不已。

httpd.conf的优化点有以下几处:

阅读更多

什么是mysql分表,分区

  • 什么是分表,从表面意思上看,就是把一张表分成N多个小表,具体请看mysql分表的3种方法

  • 什么是分区,分区呢就是把一张表的数据分成N多个区块,这些区块可以在同一个磁盘上,也可以在不同的磁盘上,具体请参考mysql分区功能详细介绍,以及实例

    阅读更多

Web缓存的工作原理

所有的缓存都是基于一套规则来帮助他们决定什么时候使用缓存中的副本提供服务(假设有副本可用的情况下,未被销毁回收或者未被删除修改)。这些规则有的在协议中有定义(如HTTP协议1.0和1.1),有的则是由缓存的管理员设置(如DBA、浏览器的用户、代理服务器管理员或者应用开发者)。

阅读更多

什么是Web缓存

Web缓存是指一个Web资源(如html页面,图片,js,数据等)存在于Web服务器和客户端(浏览器)之间的副本。缓存会根据进来的请求保存输出内容的副本;当下一个请求来到的时候,如果是相同的URL,缓存会根据缓存机制决定是直接使用副本响应访问请求,还是向源服务器再次发送请求。比较常见的就是浏览器会缓存访问过网站的网页,当再次访问这个URL地址的时候,如果网页没有更新,就不会再次下载网页,而是直接使用本地缓存的网页。只有当网站明确标识资源已经更新,浏览器才会再次下载网页。至于浏览器和网站服务器是如何标识网站页面是否更新的机制,将在后面介绍。

阅读更多

set_error_handler这个函数的作用是为了防止错误路径泄露

何为错误路径泄露?

我们写程序,难免会有问题,而PHP遇到错误时,就会给出出错脚本的位置、行数和原因

有很多人说,这并没有什么大不了。确实,在调试程序阶段,这确实是没啥的,而且我认为给出错误路径是必要的。

但泄露了实际路径的后果是不堪设想的,对于某些入侵者,这个信息可是非常重要,而事实上现在有很多的服务器都存在这个问题。

有些网管干脆把PHP配置文件中的display_errors设置为Off来解决(貌似我们就是这样做的),但本人认为这个方法过于消极。

阅读更多