樱桃沟夹事

Timo's life

这是问句,因为我也不知道如何彻底解决!
统计数据的准确性是需要产品,开发,BI,运行之间互相沟通的。
现在出现的问题经常会发现几个统计数据之间不一致。这种原因我自己也检讨过。首先由于网站程序一直在变更,比如之前加入了一个退会功能,结果把有些ID的数据全部给删除了。那由于统计时间不同导致用户数据都不一样。
第二个问题是有些不同程序的逻辑不一致,比如login和游戏记录用户登陆的算法居然还不一致,我想怎么会游戏登陆人数居然比登陆网站的人还多。但是如果要更改就会导致网站中很多程序都要更改,更改还需要进行测试。但是统计的测试跟普通的功能测试和性能都不一样,你必须考虑到各种各样的情况导致数据记录的不一致。
第三个问题是数据源不一致,有些开发喜欢打日志,有些喜欢记录数据库。无论是日志和数据库记录都会涉及到最终数据合并的问题。但是有时候还是会发现数据会存在个位数的差异。
所以要保证统计结果的一致性,首先我们要保证数据源的一致性,这个就需要搭建好数据仓库,然后所有的统计数据都从这里来进行获取,这样就从源头上规避了数据源不同导致的统计结果不一致。搭建数据仓库的另外一个意义是不会程序在数据库中删除数据也导致的不同时间统计导致最终结果不一致。
逻辑上的问题分为2种。一种是网站程序的逻辑,这个开发和BI,运营之间必须要确定好。其次是统计脚本的逻辑,这个前面忘记说了,统计脚本的逻辑则需要BI和运营之间要协调好。比如你要计算网站登陆率,那分母一般网站的注册人数,而如果这个网站有激活步骤的话,那分母是否要变成激活人数?
现在最主要的工作就是如何建立合理的数据仓库。而运营的需求是要知道这个用户从哪个广告或者网站注册进来,之后又是从网站哪个入口进入到网站,以及进来之后每一步的操作,以及所有的用户个人资料。由于要详细到每个人,所以这个数据仓库肯定就会非常大了,如何建库建表真是个问题,而且MySQL还缺乏那么多分析函数,由于现在还在搭建阶段,真想放到postgresql8.4中。
2010-04-09
Best regards
Timo Seven

twitter: https://twitter.com/zauc ######也请翻墙浏览####################
UNIX System Admin & MySQL DBA

今天KFC上了各大网站的头条。原因是因为它刚出的秒杀活动居然停止了。它为了推广它的KFC优惠网,推出了秒杀活动了,可现在由于去兑换的人太多,居然自己停止了。我想估计
根据今天早上北京卫视的暗访北京KFC的镜头,里面店员的原话是这样的“今天下午一开始来的2个顾客我们都给兑换了,而第三位客户来的时候我们刚接到总部通知,说这些兑换券是假的,不予兑换。”从这里可以看到,KFC确实有这个活动,而当天肯定也是可以兑换的,不然为什么这家店可以兑换,这跟KFC官方说的这个活动还未推出明显是有矛盾的。而KFC所谓已经报警更是恶人先告状。所以这个公司根本没有诚信,我保证我以后再也不吃KFC的任何东西,也不会吃百胜旗下的任何东西,比如必胜客,东方既白。
但是中国人大多有健忘,过了这个阵子,很多肯定都忘记了。就好比现在丰田对于中国消费者的态度,跟对美国消费者态度差太远了,不管别人怎么样,反正我是肯定不会买丰田旗下任何品牌的车,无论是普通丰田还是高端的我现在根本买不起的雷克萨斯,都给见鬼去吧。
不光是国外品牌,而国内品牌像出了三聚氰胺时间的蒙牛和伊利,可现在大家还是吃的很多,超市的货架上还是摆满了这2个品牌的产品。远不像那个时候牛根生整天哭天喊地啊,说要救救民族企业,可蒙牛真是民族企业吗?
不管其它人怎样,反正我自己现在每天公司发的酸奶(蒙牛和伊利),我是都给人家了,要是人家不要那只好是扔了。而我自己去超市买都是三元或者光明的。
还有各种绯闻的明星,比如抛妻弃女的孙楠,可真不明白为什么还有那么多电视台请他? 为了收视率? 可这种人会有好的人品?看的就恶心啊恶心。我不知道电视台现在收视率至上,为了更好的卖广告?
今天说了点跟技术无关的事情了,希望能保持好每日一篇。 最好还是技术上的东西,或者学习英文的内容。我不是愤青,但是我记得哪些人对我不好,哪些人对我好。
2010-04-07

Mysql innodb performance optimization

Mysql innodb存储引擎的性能优化

本文翻译自http://www.mysqlperformanceblog.com/files/presentations/UC2007-Innodb-Performance-Optimization.pdf

这里只是我对这个PDF文件进行了翻译,由于本人刚从事mysql DBA一职,所以很多东西自己并不能很好的翻译出来,其中对于硬件部分翻译的应该还行,但是关于数据库方面的翻译的不好,大家就看看吧,翻译本文只是想更 清楚的了解mysql 优化上的一些基本原则,而国内对于这个没有完整的资料。本文的作者Heikki Tuuri是InnoDB的创始人,在翻译过程中同样获得了Peter Zaitsev的帮助,他是《High Performance MySQL》一书的作者。

作者: Heikki Tuuri

Email: pz@mysqlperformanceblog.com

阅读全文 »

京东已经不是3年前那个京东了,记得那时候还叫jdshop,现在的售后服务实在是跟以前没法比了。最近买了键盘保护膜真是受了一肚子的气。要不是别人给的京东卡,要不谁来京东啊,amazon和新蛋都比京东好多了。丈母娘要定个计步器,可居然缺货1个月以上了。我靠,你耍人呢? 你要没有直接说绝版就行了。


先是定了一个纳米键盘保护膜,结果每次都给送来TPU的,纳米的58元,而TPU得是38元。来来回回居然送了4次还给送错,真是佩服京东啊,是不是我以后定个笔记本包你们给我送台笔记本过来呢? 京东的仓库管理和配货以及送货流程怎么跟其他B2C公司来比啊。

送这个就算了,那我就定这个吧,可我26号订货的时候还有TPU的,结果到我今天想提货了,却提示我没有货了。我靠,你的后台系统太烂了吧。

部门一个项目要上LVS,之前我是没有真正做过LVS,只做过FREEBSD的HA,那真是费了很大劲,每次还必须自己手动编译内核来支持CARP,每次都得这样加上

 # To make an SMP kernel, the next line is needed options SMP # Symmetric MultiProcessor Kernel # increase max allowable process virtual memory size options DFLDSIZ="(128\*1024\*1024)" options MAXDSIZ="(1024\*1024\*1024)" options MAXSSIZ="(1024\*1024\*1024)" options DEVICE_POLLING options HZ=1000 ##CARP options ALTQ options ALTQ_CBQ device pf #device pflog #device pfsync device carp options AUDIT 

而现在用的Linux的LVS已经从2.4需要手动编译,而现在2.6内核直接就内核支持了,真是方便太多了,但是没有实际操作过。这次就出现问题了。由于nagios和lvs在一台机器上,问题出现了,居然虚拟IP需要配置在lo口上,真是奇怪了,为什么要配置在lo上而不是eth0上。
nagios要安装nrpe来跟nagios进行通信,另外一台LVS没有问题,直接telnet 192.168.1.3 5666也没有问题,可以通过相关命令获得系统信息。而这台LVS居然不能telnet 192.168.1.2 5666直接就给退出了。奇怪了,配置都是一样啊。都是允许1.2进行访问的呀。界面上显示的可以是nrpe ssl握手出错,于是想估计是ssl的问题,可重装下也还是一样。这就奇怪了。
后来用netstat -rn看了下本地路由也没有问题,实在是没辙了.

于是就看看log里都是记录着什么,结果发现居然全部都是外网IP的访问拒绝信息,可路由信息里没有显示啊,而且就算通过traceroute也是本地啊。想来想去还是lo造成的,而且log里记录的还都是LVS的虚拟ip,于是就在Nrpe加入了虚拟IP的可访问权限,这下一试就通过了,同时snmpd.conf也加入了虚拟IP,这下终于OK了,明天可得看看Linux的路由策略到底是怎么走的。奇了怪了。
今天看了下了iptables,感觉iptables也会导致这样的问题存在。但是如果是iptables的问题的话,那telnet到内网其它机器就也会有问题的,是否也会走公网端口呢?

本文参考了ibm press的《Linux 服务器性能调整》,这本书全面介绍了性能调整的方方面面,但是把很多无用的显示信息放到正文中,这样很不爽

vmstat是在xnix我们常用的性能监控工具。常用的命令有vmstat 5 5,这个表示每5秒统计一次,共统计5次。

[root@ns ~]# vmstat 5 5
procs ———–memory———- —swap– —–io—- –system– —–cpu——
r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
0  0 1968768  83276 206644 965036    0    0    96   296    1    0 25  0 73  2  0
0  0 1968768  83276 206644 965036    0    0     0    10 1021  760  0  0 100  0  0
0  0 1968768  83284 206644 965036    0    0     0     3 1030  725  2  1 98  0  0
0  0 1968768  83276 206644 965036    0    0     0    22 1048  790  0  0 100  0  0
1  0 1968768  82268 206644 965048    0    0     0   190 1054  842  0  0 99  0  0

前面一个5表示间隔多少秒,后面一个5表示统计几次。

第一列是procs,这个提供了生成报告时正在运行的进程数目(r)以及被阻塞的进程数目(b)。这2个值通常是越低越好,越低说明cpu空闲度高。
第二列是memory,这个提供了换出内存(swpd),空闲内存(free), I/O数据结构的缓冲区的缓存大小(buff),以及从磁盘读取文件的内存缓存(cache)的大小,单位都是KB。swpd的取值反映了kswapd的活动情况。
第三列是swap部分,这里提供了从磁盘上换入的内存容量(si)以及换出到磁盘上内存量(so),单位为KB/s。so反映了当数据被换出到交换分区时kswapd的活动情况,而si则反映了当页面被换回到物理内存时发生页面错误的情况。这两个值在系统内存够大或者负载较轻的情况下应该都为0.
第四列是io部分,这个部分反映了从设备读入块数(bi)以及写出到设备上的块数(bo),单位为KB/s,当I/O操作特别频繁的时候要特别注意这2个值的变化。
第五列是system部分,显示了每秒钟的中断数目(in)和上下文切换数目(cs)。中断和上下文切换是每个程序都肯定存在的,所以必须要 有所前后文比对才能确定是否系统出了问题,程序有问题肯定会导致频繁的中断和上下文切换,这样非常消耗系统资源。
第六列是cpu部分,这里提供了用户(us),系统(sy),真正空闲(id)以及等待I/O完成(wa)在CPU总时间中所站的百分比,若wa值过大,则应该检查I/O子系统。
而在linux2.6.11后还会多出(st)列,这个表示虚拟线程占有cpu。现在还不知道这个值具体有什么作用,是不是只有在装了KVM或者XEN的情况下才有用呢?

上周六跟老婆去国美把佳能500D给抱回来了,不是我想买日货,可单反相机里除了日货就是韩货,于是还是选择了日货。

500D之前在网上看了很多介绍,觉得对于我们这种新手应该还是够用的了,就是标配的18–55镜头。

下面这2张我是用来测试微距的。


昨日为了对500D有更深入的测试,于是特地去了次动物园。

下面这一张是把快门调到15秒后得到的结果

阅读全文 »

今日老婆突然说肚子饿,让我想起了这次春节回上海去还想去吃吃的吴江路。

可自从2008年改造了吴江路西段后,现在居然在改造东段了,看来以前熙熙攘攘的吴江路就此消失了。

其实以前上海可是有很多美食街的,比如黄河路等等。

无意义去批判政府为什么要改造,很明显的道理。

无意中在网上浏览,发现了如下这个博客http://qiujingyi.blshe.com/post/10626/501539

里面的照片比较吸引我。现转帖如下:

阅读全文 »

一个完整的网站上线流程
上线的流程
1. 上线流程包含下列几个方面:
1.1. 网络规划
1.2. 系统规划
1.3. 数据迁移
2. 网络规划包含的内容
2.1. 挑选机房
2.2. 是否需要划分多个网段
2.3. 出口是否需要VSRP
2.4. 交换机之间如何进行备份
2.5. 各个交换机之间的连接速度大小
3. 系统规划包含的内容
3.1. 挑选服务器
3.2. 选择存储
3.3. 选择操作系统
3.4. 网站如何进行分层
3.5. 各个应用如何良好分配到不同的服务器上
3.6. 系统的监控
3.7. 系统的备份
4. 数据迁移
4.1. 静态存储的迁移
4.2. 数据库的迁移

选择机房
选择机房在中国是一个非常头疼的事情,你必须考虑到你网站所服务的对象是属于网通还是电信,以及其它小的运营商。不过在国外基本没有这样的问题。只要选择路由好点的基本就可以了。从国内到国外服务器之间如果能够在保持在20跳以内就算可以的了。要是你还是不放心,要进行世界各地的测试,那可以找类似的测速网站来进行测试。比如Banreee, Networkbench, gamez都是比较好的测试网站。

网段规划
在机房选择好以后,就要进行网段规划了,特别是当你内部服务器之间交互非常频繁的情况下,那就更要很好的进行规划了,不同需求的服务器必须放在不同的VLAN之中,特别嫉划分非常大的网段,那样广播风暴就会比较严重。分网段有2种情况我个人认为,有人是把整套的服务器放在同一网段中,这一整套服务器包含了所有的前端,中间层和后端以及数据库,这个感觉是游戏类的会进行这样的规划。还有一种是所有前端一个单独的VLAN,中间层一个单独网段,后端存储一个网段,数据库单独一个网段。这种当你网站规模比较小的情况下就不能进行这样的划分,毕竟交换机没那么多,以后如果要把服务器换做其它用途,还必须更改交换机某个端口的VLAN号,一旦改的多了连自己都记不清了。

VSRP
VSRP是一种交换机的高级协议,用来2个交换机之间进行互相冗余的协议。如果你2个交换机之间要做VSRP,那一般是需要6个公网IP,3个是指向机房网关,另外3个是做本地服务器的网关。其中有2个是作为虚拟IP来进行使用的。所有内网服务器都要指向那个内部的虚拟IP。这样2个交换机之间就算有一个down了,那也不会造成网站无法访问。但是这种需要比较高端的交换机,比如H3C的S5500 EI系列。而且还要2个交换机起码要互联4个光纤,这样保证2个交换机互相数据的交互。而下面的交换机也要各连2根或者1根光纤到2个交换机,比较占用交换机端口。所以一般都是要买48口的才比较保险。如果只是小型网站,那这些也就没有必要了。

交换机备份
交换机备份有2种,一种是热备,一种是冷备。
先说冷备,冷备就是把一个交换机配置成跟线上运行的交换机一样,一旦线上的出现问题后,通知机房更换交换机,并且重新连线跟服务器之间的和上层交换机之间的。
热备就是一旦一个交换机出现问题后自动切换到另外一个交换机上,而不需要通知机房重新接线,服务器也不需要重新连线。但是这种方案需要服务器起码要有4个网卡,然后交换机直接也要做好冗余设置,这样比较耗费钱,当然你如果不缺钱完全可以使用这种方案。

交换机之间的连接速度
这个看具体的业务,核心交换机之间最好要有4G的上行和下行带宽,而核心有下层的交换机也起码要有2G的带宽,不然你数据内部交互非常频繁就会出现瓶颈。而挑选交换机也要着重考虑交换机的背板带宽。如果背板带宽都不高,那交换机之间连接速度再高也没啥用啊。

阅读全文 »
0%