场景
Mutex主要用于有大量并发访问并存在cache过期的场合,如
- 首页top 10, 由数据库加载到memcache缓存n分钟;
- 微博中名人的content cache, 一旦不存在会大量请求不能命中并加载数据库;
- 需要执行多个IO操作生成的数据存在cache中, 比如查询db多次;
问题
在大并发的场合,当cache失效时,大量并发同时取不到cache,会同一瞬间去访问db并回设cache,可能会给系统带来潜在的超负荷风险。我们曾经在线上系统出现过类似故障。
场景
Mutex主要用于有大量并发访问并存在cache过期的场合,如
问题
在大并发的场合,当cache失效时,大量并发同时取不到cache,会同一瞬间去访问db并回设cache,可能会给系统带来潜在的超负荷风险。我们曾经在线上系统出现过类似故障。
数据分布
1、MySQL Cluster自动分区数据表(也可能使用用户自定义分区),将数据分布到分区中
2、一个数据表被划分到多个Data Node分区中,数据在分区中被”striped”
3、主键的 hashing 决定哪个分区拥有数据(自动分布)
4、对主键的一部分进行hashing也是可能的(适合sharding和数据局部性)
Discuz X3/X2.5默认开启缩略图的时候水印只添加到原图上面,而缩略图上面无法进行水印图的添加,需要改下程序,方可给缩略图添加水印,需要修改2个地方:
1、打开 source\function\function_post.php
2、查找
$image->Watermark($_G['setting']['attachdir'].'/forum/'.$newattachfile[$aid], '', 'forum');
PHP可以直接读取MongoDB GridFS中的图片并显示到页面中,但对PHP的压力就大了。偶然机会,了解到Nginx可以代理访问,实现过程如下:
到官网下载最新版的 Redis-3.2.6,
我把它放到文件夹:/usr/local/src/centos-sdk/source2/redis
MySQL登录命令语法
mysql -u 用户名 -p
1、如果都是MyISAM引擎,直接拷贝原有数据库文件"*.frm"、"*.MYD"、"*.MYI"即可,如果原数据库引擎是InnoDB,切记还需拷贝ibdata1文件;
2、备份数据库的时候,最好是用相关的工具进行备份或是导出sql文件,以免浪费时间在数据库恢复上。
事故描述
在一次项目中,上线了一新功能之后,陆陆续续的有客服向我们反应,有用户的个别道具数量高达42亿,但是当时一直没有到证据表示这是,确实存在,并且直觉告诉我们,这是不可能的,就一直没有在意,直到后来真的发现了一个用户确实是42亿,当时我们整个公司都震惊了,如果有大量用户是这样的情况,公司要亏损几十万,我们的老大告诉我们,肯定是什么地方数据溢出的,最后我们一帮人,疯了似的查代码,发现……