2014年11月

负载高, 就自动重启

家里的路由器上 host blog, 有时候很不稳定, 比如说如果路由器上同时开bt 下载, 它的负载有可能会高, 有时候运行时间长了, nginx 或者 fastcgi 会使 CPU 飙升到100%.

为了保证 Blog 的稳定性, 首先在 dnsPod 上面做了 D监控, 一旦无法访问, 就微信/邮件通知. 另外路由器上每天凌晨会自动定时重启. 有时候重启真是灵丹妙药.

最近发现有时候 nginx 或者 fastcgi 进程有时候会使CPU 飙升, 导致 Blog 不能访问. 不过这些时候, 内部上网总是能保证的.

怎么解决这种偶尔的负载过高呢, 可以通过监控负载过高, 进行重启的方式进行. 于是有了下面的检测并重启的脚本.
[这里重启的是 host 这个blog 的路由器, 不是其它server 哦]

load=$(uptime | awk '{print $8}' | awk -F '.' '{print $1}')
if [ 1 -eq $load ];then
     echo 'I am going to restart'
     reboot
fi

其实这个 shell 脚本很简单, 取 uptime 命令输出的 15 分钟的CPU 负载, 一旦发现大于1, 就重启.

但是为了写这个脚本, 却经历坎坷. 其中遇到的困难有:

  1. 这个负载值是一个有 2 位小数的浮点数, 一开始想用 shell 脚本的 if 去对比, 发现根本不能比, shell 脚本不支持浮点数对比;
  2. 另外 if 那个数字的对比, 方括号和中间的数字之间必须有空格, 否则报错. [空格1 -eq $load空格].

这里为了使用整形对比, 还特地截取了其中的整形部分.

windows 端口占用

之前曾发现过windows上 skype 偷偷占用8080端口, 导致本地tomcat 无法启动的问题, 今天竟然发现即使eclipse关掉之后, 竟然后台还有一个进程, 名字叫 javaw.exe, 同时它还绑定了8080端口.
怎么在windows 上找到这个进程并且杀死它?

  1. 通过端口找到进程ID

    netstat -aon | findstr "8080"

  2. 通过进程ID 找到进程名字

    tasklist | findstr "14869"

然后任务管理器杀死它

eclipse tomcat 启动 timeout issue

今天启动tomcat 的时候, 遭遇如下错误:

Server Tomcat v7.0 Server at localhost was unable to start within 45 seconds. If the server requires more time, try increasing the timeout in the server editor.

解决:
双击 server, 弹出 server 编辑器, 修改 timeout 数值.

状况:
serverTimeout1.png
解决:
serverTimeout2.png

html 页面内容不能选中, 不能复制

今天查看一朋友所在公司官方主页的联系我们页面, 发现竟然这个页面的内容竟然不能copy.
百度了一下, 竟然是有这么一段代码:

<body oncontextmenu="return false" ondragstart="return false" onselectstart="return false" onselect="document.selection.empty()" oncopy="document.selection.empty()" onbeforecopy="return false">

里面的内容大概就是不准复制, 不准copy, 不能拖拉...

不过这个页面适得其反, 不能copy, 人家连你那么长的地址都要自己敲出来, 不能copy 真还是麻烦.