November 19, 2013
linux下使用iostat和pidstat查看进程使用资源情况
"引言\n在查看系统资源使用情况时,很多工具为我们提供了从设备角度查看的方法。例如使用 iostat 查看磁盘io统计信息:\nlinux:~ # iostat -d 3 Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn sda 1.67 0.00 40.00 120 以上显示的是从sda的角度统计的结果。当我们需要从进程的角度,查看每个进程使用系统资源的情况,有什么方法吗?\n使用pidstat工具可以获取每个进程使用cpu、内存和磁盘等系统资源的统计信息,pidstat由sysstat rpm包提供,可在suse11使用。下面我们来看pidstat的具体用法。\n默认输出\n执行pidstat,将输出系统启动后所有活动进程的cpu统计信息:\nlinux:~ # pidstat Linux 2.6.32.12-0.7-default (linux) 06/18/12 _x86_64_ 11:37:19 PID %usr %system %guest %CPU CPU Command …… 11:37:19 11452 0.00 0.00 …"
November 14, 2013
sysctl -P 报错 error: “net.bridge.bridge-nf-call-arptables” is an unknown key 的解决办法
"今天在安装openvz的时候(安装教程: http://blog.haohtml.com/archives/14724),修改完内核参数后,执行\n[shell]sysctl -P[/shell]\n后,提示\n[shell]net.ipv4.ip_forward = 1 net.ipv4.conf.default.rp_filter = 1 net.ipv4.conf.default.accept_source_route = 0 kernel.sysrq = 1 kernel.core_uses_pid = 1 net.ipv4.tcp_syncookies = 1 error: \u0026ldquo;net.bridge.bridge-nf-call-ip6tables\u0026rdquo; is an unknown key error: \u0026ldquo;net.bridge.bridge-nf-call-iptables\u0026rdquo; is an unknown key error: \u0026ldquo;net.bridge.bridge-nf-call-arptables\u0026rdquo; is an …"
November 12, 2013
使用Vagrant在Windows下部署开发环境[转]
"做Web开发少不了要在本地搭建好开发环境,虽然说目前各种脚本都有对应的Windows版,甚至是一键安装包,但很多时候和Windows环境的相性并不是那么好,各麻烦的问题是实际部署的环境通常是Linux,常常还要面临着开发和部署环境不一致,上线前还要大量的调试。更要命的是,如果有很多机器需要装的话,那就真是一个灾难了。\nWindows下玩Linux少不了虚拟机,但装系统依旧是相当费事。在现在什么都在自动化的今天,Vagrant就是这么一个神器,基于Ruby开发,使用开源 VirtualBox 作为虚拟化支持,可以轻松的跨平台部署。\n今天试着把几台机器的环境都换成Vagrant,很爽很顺畅,于是就试着整理了一下使用小结:\n目前所选用的是当前的最新版本Vagrant 1.2.7 (对应的Vagrantfile V2版),VirtualBox 使用的是 4.2.16 准备工作:\n下载安装 VirtualBox : https://www.virtualbox.org/ 下载安装 Vagrant : http://www.vagrantup.com/\n下载需要使用的 box :\n官方提供的范例: …"
November 11, 2013
使用 Vagrant 打造跨平台开发环境
"Vagrant 是一款用来构建虚拟开发环境的工具,非常适合 php/python/ruby/java 这类语言开发 web 应用,“代码在我机子上运行没有问题”这种说辞将成为历史。\n我们可以通过 Vagrant 封装一个 Linux 的开发环境,分发给团队成员。成员可以在自己喜欢的桌面系统(Mac/Windows/Linux)上开发程序,代码却能统一在封装好的环境里运行,非常霸气。\n安装步骤 1. 安装 VirtualBox 虚拟机还是得依靠 VirtualBox 来搭建,免费小巧。 下载地址: https://www.virtualbox.org/wiki/Downloads\n* 虽然 Vagrant 也支持 VMware,不过 VMware 是收费的,对应的 Vagrant 版本也是收费的\n2. 安装 Vagrant 下载地址: http://downloads.vagrantup.com/ 根据提示一步步安装。\n此外,还得下载官方封装好的基础镜像: Ubuntu precise 32 VirtualBox …"
November 9, 2013
lxc学习-安装篇
"安装环境:\nVirtualBox 4.2.18 Centos6.4 64位 内存 1G 安装方法:\n[shell]\nyum -y install gcc libcap-devel libcgroup wget \u0026ldquo;http://downloads.sourceforge.net/project/lxc/lxc/lxc-0.9.0/lxc-0.9.0.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Flxc%2Ffiles%2Flxc%2F\u0026amp;ts=1383981486\u0026amp;use_mirror=jaist\u0026quot; tar zxvf lxc-0.9.0.tar.gz cd lxc-0.9.0 ./autogen.sh ./configure make \u0026amp;\u0026amp; make install[/shell]\n这里,在/usr/local/bin 目录里可以看到以 lxc_开头的命令.(注意要将这个目录添加到用户的环境变量里)\n更多学习参考资料请参考: …"
November 4, 2013
PHP 多台服务器 session 用Memcached存储Session
"php实现多服务器共享session的方法:\n多服务器共享session的方法:\n1.通过NFS文件共享的方式,多台WEB服务器共享保存session文件的磁盘 2.保存在数据库中,这种方式的扩展性很强,可以随意增加WEB而不受影响 3.可以将session数据保存在memcached中,memcached是基于内存存储数据的,性能很高,用户并发量很大的时候尤其合适,参考PHP实现多服务器session共享之memcache共享 4.文件方式保存session时,可以采用php的扩展eaccelerator来存储sesion\nphp中的Session默认是用文件的方式存储的,如果用多台WEB服务器,Session共享可能就会成为一个大的问题,可以用NFS共享的方式来存储,但是对于并发请求更多的站点来说,用NFS也会出现问题,下面就说说用Memcached来保存Session的问题。\nvi memcached_session.php,输入如下的代码\n$ip = \u0026#39;192.168.1.111\u0026#39;; $port = 11211; …"
October 31, 2013
Golang import使用说明
"我们在写Go代码的时候经常用到import这个命令用来导入包文件,而我们经常看到的方式参考如下:\nimport( \u0026#34;fmt\u0026#34; ) 然后我们代码里面可以通过如下的方式调用\nfmt.Println(\u0026#34;hello world\u0026#34;) 上面这个fmt是Go语言的标准库,他其实是去goroot下去加载该模块,当然Go的import还支持如下两种方式来加载自己写的模块:\n1.相对路径\nimport “./model” //当前文件同一目录的model目录,但是不建议这种方式来import 2.绝对路径\nimport “shorturl/model” //加载gopath/src/shorturl/model模块\n上面展示了一些import常用的几种方式,但是还有一些特殊的import,让很多新手很费解,下面我们来一一讲解一下到底是怎么一回事\n1.点操作\n我们有时候会看到如下的方式导入包\nimport( . \u0026#34;fmt\u0026#34; ) 这个点操作的含义就是这个包导入之后在你调用这个包的函数时,你可以省略前缀的包名,也就是前面你调用的fmt.Println(“hello …"
October 22, 2013
安装zeromq时,出现 error while loading shared libraries: libzmq.so 错误的解决办法
"Is this on Ubuntu? You’ll need to add /usr/local/lib to ldconfig to be able to use ZeroMQ. Here’s a web page with some info: http://ubuntuforums.org/showthread.php?t=420008\nHere are the actual instructions:\nAdd /usr/local/lib to a new line in ld.so.conf:\n$ sudo vi /etc/ld.so.conf Rerun ldconfig:\n$ sudo ldconfig That should work (if I remember correctly). Let me know if you have any issues."
October 22, 2013
golang实现验证电子信箱和手机格式合法性(正则表达式)
"邮箱验证\nfunc checkEmail(email string) (b bool) { if m, _ := regexp.MatchString(\u0026#34;^([a-zA-Z0-9\\_-])+@([a-zA-Z0-9\\_-])+(.[a-zA-Z0-9_-])+\u0026#34;, email); !m { return false } return true } 手机验证\npackage main import ( \u0026#34;regexp\u0026#34; ) const ( regular = \u0026#34;^(13[0-9]|14[57]|15[0-35-9]|18[07-9])\\\\d{8}$\u0026#34; ) func validate(mobileNum string) bool { reg := regexp.MustCompile(regular) return reg.MatchString(mobileNum) } func main() { if validate(\u0026#34;13888888888\u0026#34;) { println(\u0026#34;是手机号\u0026#34;) return } …"
October 22, 2013
[必读]golang语言报错信息fatal error: all goroutines are asleep – deadlock!
"出错信息fatal error: all goroutines are asleep – deadlock! 出错信息的意思是: 在main goroutine线,期望从管道中获得一个数据,而这个数据必须是其他goroutine线放入管道的 但是其他goroutine线都已经执行完了(all goroutines are asleep),那么就永远不会有数据放入管道。 所以,main goroutine线在等一个永远不会来的数据,那整个程序就永远等下去了。 这显然是没有结果的,所以这个程序就说“算了吧,不坚持了,我自己自杀掉,报一个错给代码作者,我被deadlock了” 例子:\npackage main func main() { c := make(chan bool) go func() { c \u0026lt;- true }() \u0026lt;-c //这里从c管道,取到一个true \u0026lt;-c //这行导致deadlock,因为这时的c管道,永远都取不到数据(注释掉这行就不报错) } "