首先要说,这是个BT的问题,以前还真少想过。先说我遇到的问题吧。 我看到的一行代码里,Memcached的缓存时间被设置为86400*24*4, 等于是96天。而当调用set去存储的时候,memcached会返回true。而当你用get的时候,就是相反的结果了: FALSE。 要说BT呢,因为用到Memcached的人,通常不会去给缓存96天,这种情况下,更好的选择是DB、filecache或者其他。尽管BT,我还是去测试了一下最长时间,得到的结果是: 30 days。去memcached源码里查了一下,这下就明白多了: #define REALTIME_MAXDELTA 60*60*24*30 /* * given time value that’s either unix time or delta from current unix time, return * unix time. Use the fact that delta can’t exceed one month (and real time value can’t * be that low). */ static rel_time_t realtime(const time_t exptime) { /* [...]
Archive for the ‘Unix/Linux’ Category
很多人会觉得VIM是个非常好的Editor,也有很多人因为黑色的界面而对VIM充满了向往。但很多的人,或者说,大部分上述的人都因为VIM上手过程中频繁的配置,不停的去下载并安装plugin, 来回的修改vimrc文件等等等等,在过了几分热情之后,就渐渐对VIM说baybay了。 今天给大家推荐一个由一位来自台湾的兄弟林佑安(翻墙)开发维护的Vimana,这是一个安装以后,可以自动搜索、下载、安装并配置VIM插件好东东。省得大家到处去找寻了。这是一个Perl编写的东东,所以安装的时候,需要先确定机器里安装了Perl,然后在CPAN下安装(如果你不知道Perl和CPAN,google之)。具体安装与介绍,请参看下面的keynote. 这里面不光是介绍了这个Vimana,事实上主体不是这个,而是介绍了相当的VIM使用技巧,有兴趣的可以认真关注一下,E文的,不过不难的。 PS: VIM 7.3发布了,有兴趣的可以下载来试用一下: ftp://ftp.vim.org/pub/vim/unix/vim-7.3.tar.bz2。下午的时候我已经在单位的开发机上和Mac上都装上了,我还在体验中。下午郁闷的是,编译的时候居然忘记加multibyte支持,还在twitter上发牢骚说不对中文支持不行了呢。看来这段关注点的变化导致自己有些神经已经退化了。 Perl.Hacks.On.Vim View more presentations from Cornelius Lin.
Filed under: Unix/Linux
Social Tagging: 2950 • dell • 故障 • 硬盘
临近五一节日,估计所有的运维都一样,会紧张服务器的假期表现,并在节前的这些天里为此做许多的准备,以求尽可能能够实实在在的享用这个假期。其实每个假期都是这样的。我也不例外,虽然不是专职运维。不过有时候就这样,最担心什么事就会出什么事。这不,刚去机房加了机器,然后故障就来了。 Dell PowerEdge2950 II机器,当加到6块硬盘的时候,服务器就会出现报警,dmesg一下,发现硬盘报警,系统报Input/Output Error,重启后message文件里有如下内容: [attach=21] 网上查了查,这种故障通常出现在USB设备上,我这台2950是内置了PERC 5i的Raid卡,出这种故障着实不明白。后来有朋友提醒到他们曾经遇到过类似的问题,同样是2950,当时是加了6块盘,只认出3块来,相比之下我这种情况还属于好的呢。Dell官方也没有给出类似问题的解决方法,先去机房把新加的硬盘拆下来换到柜子上试试,重启,OK了。 来不及细想了,先放心一下,启动机器,启动服务,回来慢慢再查这个问题吧。 如果你也曾遇到过类似的问题,或者有好的解决方案,请共享一下。
郁闷的Nginx,现在文档还是比较少,官方的wiki里虽然有不少资料,不过还是不够全。 好了,回归正题,今天在做一个小项目的时候,再次遇到Nginx经常会出现499状态的问题,表现是页面第一次能打开,第二次就打不开了。Nginx的日志里报如下错误: client closed prematurely connection, so upstream connection is closed too 而且这个问题,在Firefox下不存在,只有在IE的时候才会出现。 HTTP状态码是499,查了查Nginx的源代码,如下: #define NGX_HTTP_CLIENT_CLOSED_REQUEST 499 网上搜索到的情况不少,不过没有一个说到正确的解释的。于是还是自己来试吧。修改了好多地方,不见效果,后来对比另外一台机器的配置,增加了个 charset的设置,然后奇迹般的OK了。老实说,到现在也没搞明白到底是为什么。我猜的是:因为小项目,页面编码设置可能不是太规范,所以可能会有这 个问题,导致IE6在识别不正确的情况下,会用非正确编码(当时我是UTF-8)之外的编码来处理,因为长度不同,所以可能就提前关闭了连接。好像在 Apache下还没有遇到过这种情况。也不知道应该说IE6的不是呢?还是说Nginx的不是呢?
Filed under: Unix/Linux
Social Tagging: gentoo • gmail • ssmtp
Installation To get this running, I followed the documents @ the bottom of this post. Here’s the condensed version: ## note that the following just enables mailwrapper in ssmtp ## this is "to allow multiple MTAs to be installed". So if one is already using ssmtp one shant need that use flag.# echo "mail-mta/ssmtp mailwrapper" [...]
在UNIX中用sar命令进行系统维护 在使用UNIX操作系统的过程中,我们常常会用到各种各样的问题,比如系统运行速度 突然变慢,系统容易死机或者主机所带的终端常出现死机,这时我们常常猜测,是硬 盘空间太小,还是内存不足?I/O出现瓶颈,或者是系统的核心参数出了问题?这时, 我们应该考虑使用系统给我们提供的sar命令来对系统作一个了解,该命令是系统维护 的重要工具,主要帮助我们掌握系统资源的使用情况,特别是内存和CPU 的使用情况, 是UNIX系统使用者应该掌握的工具之一。 sar 命令行的常用格式: sar [options] [-A] [-o file] t [n] 在命令行中,n 和t 两个参数组合起来定义采样间隔和次数,t为采样间隔,是必须有 的参数,n为采样次数,是可选的,默认值是1,-o file表示将命令结果以二进制格式 存放在文件中,file 在此处不是关键字,是文件名。options 为命令行选项,sar命令 的选项很多,下面只列出常用选项: -A:所有报告的总和。 -u:CPU利用率 -v:进程、I节点、文件和锁表状态。 -d:硬盘使用报告。 -r:没有使用的内存页面和硬盘块。 -g:串口I/O的情况。 -b:缓冲区使用情况。 -a:文件读写情况。 -c:系统调用情况。 -R:进程的活动情况。 -y:终端设备活动情况。 -w:系统交换活动。 下面将举例说明。 例一:使用命令行 sar -u t n 例如,每60秒采样一次,连续采样5次,观察CPU 的使用情况,并将采样结果以二进制 形式存入当前目录下的文件zhou中,需键入如下命令: # sar -u -o zhou 60 5 [...]
Filed under: Unix/Linux
Social Tagging: freebsd • optimization • space
From: http://uw713doc.sco.com/en/FS_admin/_Time_and_Space_Optimization.html If you are using a ufs filesystem, the system attempts to optimize the time it takes to perform operations on the filesystem. In certain circumstances, the system attempts to optimize the space on the storage media being used by the filesystem. Space optimization occurs when file fragmentation exceeds: (free – 2) % of [...]
转载自: 彭勇华的Squid中文Blog 客户端的连接,可被client-side模块接收和解析,也可以由clientBeginRequest()函数主动创建一个到客户端的连接。 检查访问控制规则。客户端请求会建立一个ACL数据结构,并且注册一个回调函数,用于在访问控制完成时,通知相关结果。 在访问控制通过后,请求可能被重定向。 客户端请求转交到GetMoreData()函数,该函数在缓存里查找请求目标,和相应的Vary:版本号。假如缓存命中,client-side模块注册其自身信息到StoreEntry里。否则,请求被转发,并可能带一个If-Modified-Since头部。 请求转发过程以rotoDispatch()函数开始。该函数启动peer选择算法,可能包含发送和接受ICP消息的调用。peer选择算法也会检查相关配置选项例如never_direct和always_direct。 假如有ICP响应抵达,选择过程就终止在protoStart()函数。该函数调用相应的协议级函数,用以转发请求。我们假设这里是一个HTTP请求。 HTTP模块首先打开到原始WEB服务器或cache peer的连接(cache peer仅在配置了cache集群时才存在)。假如没有持久socket可用,就发起一个到Network Communication模块的连接请求,并包含一个回调函数。comm.c程序负责建立连接,并处理连接异常。 当TCP连接建立后,HTTP建立写缓存,并将请求写入socket。然后它建立相应的socket读缓存,用以接受和处理HTTP响应。 响应一旦接受,HTTP响应头部(header)被解析,并被放在一个响应数据结构里。在响应数据(data)被读取时,它被追加到StoreEntry里。每次数据追加到StoreEntry时,会通过一个回调函数,通知client-side模块有新的数据。读取速率取决于延迟池(delay pools,如果配置了的话)。 当client-side模块接收到通知后,它从StoreEntry里拷贝出数据,并写往客户端socket。 当数据追加到StoreEntry里,并被客户端读取后,数据可能被写往磁盘。 当HTTP模块完成了从上流服务器读取数据后,它把StoreEntry标记为“完成”。到服务器的socket可能被关闭,或被放入持久连接池,以备将来使用。 当client-side模块写完所有目标数据后,它从StoreEntry里注释掉其自身。同时它要么等待客户端的下一个请求,要么关闭客户端连接。
Copy From : http://hi.baidu.com/haigang/blog/item/aa8b9123ba760341ac34de69.html 选择最小安装完成后 如果没有安装内核源代码 可以直接从光盘复制内核源代码到系统安装。 install-sh all 更新ports树 /usr/local/bin/cvsup -g -L 2 /etc/ports-supfile 需要安装cvsup 和更新ports-supfile pkg_add -r cvsup-without-gui cp /usr/share/examples/cvsup/ports-supfile /etc/ fastest_cvsup -c CN 测试速度 Step 4 FreeBSD升级系统源代码. FreeBSD下升级系统src: 创建/root/scripts/src-update.sh文件 进入/root/scripts目录,创建src-update.sh文件 Shell: cd /root/scripts/ vi /root/scripts/src-update.sh 内容如下: [...]
在FreeBSD里设置第二块网卡为内网网卡,同时又不经过路由器连接另一台机器的话,dmesg经常会收到如下的信息: System: arp: [ip] is on [if 0] but got reply from [mac] on [if 1]。 其意思就是IP地址本来在网卡if0上,但返回的MAC地址却是if1的MAC地址。这种情况也是受到arp病毒攻击时的会表现出来的状况。对这种情况,解释是这样的: A switch works on a low level: it only knows MAC addresses. When it receives a broadcast message it will send that message to all of its ports (like it is supposed to do). Your machine maneges an [...]
RSS
twitter