您现在的位置:首页
--> 沈二铺子
今天在书店里翻完了一遍《七天七数据库》。这本书简单介绍了postgreSQL,riak,mongodb,HBase,riak,Neo4j,redis七个数据,并着重谈了数据库的特性差异和在部署维护时候的特点,并对不同需求下的数据库选型做了很多建议,感觉受益非浅。 我的几个项目,都遇到了mysql 向nosql过渡的问题,应该如何选型,我终于有了初步的方案。
图虫的服务器长期是单机运行。估计除了mysql之外,php-fpm和redis还可以在单机上共存很长时间。(多说服务器早就达成了单机每日2000万+动态请求,所以我对单机搞定图虫的大流量非常乐观)
如果是单机服务,其实就不需要用IP哪怕是127.0.0.1这样的IP去连接mysql/redis/php了,因为即使是127.0.0.1也是要走TCP/IP层的。
unix提供的unix socket来实现单机的端口访问,很多文章提到用unix socket可以提升连接速度。
我简单测试了一下,200次redis请求的耗时38ms,如果改成unix socket方式,立刻降到27ms。这简直是立竿见影啊,10ms的差距足以让我们有动力把IP方式改成unix socket方式。接mysql/redis/php了,因为即使是127.0.0.1也是要走TCP/IP层的。 unix提供的unix socket来实现单机的端口访问,很多文章提到用unix socket可以提升连接速度。 我简单测试了一下,200次redis请求的耗时38ms,如果改成unix socket方式,立刻降到27ms。这简直是立竿见影啊,10ms的差距足以让我们有动力把IP方式改成unix socket方式。 Mysql(PDO)启用unix socket的方法 1.在PDO的DSN里面:原来写host:xxx,改成unix_s
有些网站主会模拟用户的行为触发click事件? 如果这个事件是jQuery模拟的,那么可以通过检测event.originalEvent是否存在来实现。 但是网站主完全可以通过createEvent()模拟一个Event,使它更像是真实的。 到这里我们发现,通过我们自己的Javascript已经不可能检测事件的真实性了,只有等浏览器出手。查了stackOverflow之后发现,浏览器还真的出手了。
Nginx默认虚拟主机在用户通过IP访问,或者通过未设置的域名访问(比如有人把他自己的域名指向了你的ip)的时候生效最关键的一点事,在server的设置里面添加这一行: listen 80 default; 后面的default参数表示这个是默认虚拟主机。 这个设置非常有用 比如别人通过ip或者未知域名访问你的网站的时候,你希望禁止显示任何有效内容,可以给他返回500.目前国内很多机房都要求网站主关闭空主机头,防止未备案的域名指向过来造成麻烦。
好几次服务器重启,都被卡在了fsck磁盘自检,有时候几个小时都没法完成自检。 虽然说自检能够保证数据的安全性,但是对于生产环境,服务的可用性是第一位的,有时候重启服务器,几个小时访问不了真是急得让人双脚跳。 如何跳过这个恼人的fsck步骤呢?搜索了一下发现其实方法很简单,只要修改/etc/fstab中,最后的那一项,将它从2,修改成0就可以了。 官方文档上是这样写的: Controls the order in which fsck checks the device/partition for errors at boot time. The root device should be 1. Other partitions should be 2, or 0 to disable checking.
今天出现一个诡异的情况,$HTTP_RAW_POST_DATA是有值的,但是$_POST却是空的array()。 反复尝试后发现是因为header中缺少Content-Type,设置Content-Type : application/x-www-form-urlencoded; charset=UTF-8 之后,就搞定了。 非常诡异的问题,总之以后养成设置Content-Type的好习惯就对了。
If you want to make the best use out of autoload with an APC cache don’t use spl_autoload. It uses relative paths and thus will perform a stat even with apc.stat=0 (either that, or it doesn’t work at all). Instead make a custom function and use require/include with an absolute path (register it with spl_autoload_register).
今天遇到一个奇怪的问题,明明已经建立了索引,select语句的explain也表明会利用这个索引,可是结果偏偏没有用索引,最后扫描了全表。 两个结构完全一样的sql语句: sql1: select * from table where col_a = 123 and col_b in (‘foo’,\'bar’) order by id desc; sql2: select * from table where col_a = 456 and col_b in (‘foo’,\'bar’) order by id desc; 结果sql1选择利用了col_a的索引,速度很快,sql2利用了主键ID的索引,扫描了全表(40w行)。 仔细分析,发现数据库中,col_a=456的记录数有近1万条,而col_a=123的记录数
高并发地进行insert经常导致阻塞很长时间。 有些场景下我们并不需要知道insert之后的结果。因此可以采用insert delayed方法。 insert delayed是myisam对与sql标准的扩展,在innodb引擎下并不支持。 insert delayed之后,系统会立刻返回结果,使用last_inserted_id方法不能获得insert delayed得到的主键ID
不知不觉网站PV就爆发了。nginx压力越来越大,一些默认参数就显得不够用了。 我们的主服务器硬件配置非常健壮(双路至强5620 + 48GB内存 + SSD),理论上可以承受每天过500万的PV,当然,前提是优化得够好。 简单罗列一下优化过的几个参数: ulimit -n 65535这个参数位于/etc/default/nginx 中,或者/etc/init.d/nginx 文件中直接设置。 默认是1024,意思是最多打开的文件个数。1024怎么够,至少开到8192,网上很多文章都直接开到了65535。 worker_processes 8; worker数量,位于nginx.conf头部,一般来说有几个cpu核心开几个,不算超线程。 worker_rlimit_nofile 65535; 位于nginx.conf头部,也是文件数量限制,直接开大吧。 worker_connection
在php渲染的网页header信息中,会包含php的版本号信息,比如: X-Powered-by: php/5.3.3,这有些不安全,有些黑客可能采用扫描的方式,批量寻找低版本的php服务器,利用php漏洞(比如最近流行的hash冲突)来攻击服务器。 php.ini中有一个选项可以控制是否暴露这个信息,那就是: expose_php = On 默认值是On,改成Off之后,就不会显示php版本信息啦。 或者在php-fpm的pool配置文件中设置: php_admin_flag[expose_php] = off
嗯,我不是来写这次有道难题的解题报告的。事实上,我没有参加这次有道难题的资格。因为我是比赛的POJ测试平台的管理员,我的职责是负责POJ平台在这次万人比赛中的稳定运行。为了全力搭OJ平台准备这次比赛,我两周没有发twitter,也没有写博客。今天终于成功完成了三场资格赛,如释重负,来简单介绍一下在服务器架构建设中的经验。程序方面,前端程序由我负责,全部用php编写,基于Zend Framework,数据库使用mysql,使用memcach...
我个人有个坏毛病,就是喜欢攒电脑。每次心血来潮关注硬件发展的时候,都会忍不住去近在咫尺的中关村攒上一台机器。以至于有一段时间,我在学校里能够直接使用的台式机、笔记本、服务器达到了10台之多。再加上上网本和wifi手机的普及。各种问题接踵而来,一致性、安全性、远程访问、内容分享、版本控制,我需要控制的终端数量终于多到把我自己给控制住了。如果不找一些好方法,迟早我会被这些终端给拖死。于是我四处寻找把自己的...
联想到戴志康在《Discuz!X产品设计点滴分享》说的那段话 SNS Portal BBS 这三个分别在中国起始于2009、1999和1997年的应用,从年龄上就不一样,积累下来的无论对与错的用户习惯更是千差万别,谈及融合,谈何容易!生硬整合的结果,就如同客厅里铺着70年代的水磨石地板,配一个21世纪豪华双开门冰箱,外加一套意大利餐桌,桌上还放着两根油条那么奇怪。并不是东西不好,而为什么放到一起就变得...
前几天看到千鸟的一篇博客《标签的语言粒度》,颇有收获,不禁来谈谈自己对标签的一些看法。标签和关键词的异同不得不承认,不管标签(Tag)多么时尚,关键词(Keyword)多么老土,这两者之间的基本意义都是一致的,都是用来描述一个事物的多重属性。以至于,如果有用户问我标签是什么东西的时候,我仍然会告诉他:“就是以前常说的‘关键词’,换一种时髦的叫法而已”。当然,我这么说只是方便普通用户容易理解,两者之间仍然有重...
[ 共15篇文章 ][ 第1页/共1页 ][ 1 ]
近3天十大热文
- [69] Twitter/微博客的学习摘要
- [67] IOS安全–浅谈关于IOS加固的几种方法
- [65] android 开发入门
- [65] 如何拿下简短的域名
- [63] find命令的一点注意事项
- [62] Go Reflect 性能
- [61] 流程管理与用户研究
- [60] Oracle MTS模式下 进程地址与会话信
- [59] 图书馆的世界纪录
- [57] 读书笔记-壹百度:百度十年千倍的29条法则
赞助商广告