存档

2014年1月 的存档

让WordPress支持多域名多站点

2014年1月27日 没有评论

Workpress只支持子域名或者子目录方式的多站点,不支持多个不相干的域名,在网络管理员管理子站点时,是可以把域名改为不相干域名,只是这个子站点将一直登录失败。

我要说的,正是解决这个登录失败的问题。

更多内容…

分类: 生活 标签: , ,

【内训】说说域名解析

2014年1月26日 没有评论

内训2:说说域名解析

case: 想通过mcp这个名称直接访问10.4.21.184,比如:
ping mcp
ssh mcp
wget http://mcp:8186/

最简单的方法:绑host
在/etc/hosts文件最后加一行

10.4.21.184 mcp

如果多人共享,这种条目比较多,更新起来就会很不爽。有另外一种方式:
在resolv.conf中指定搜索域,用真正的域名来实现

search toft.tk

search后可以跟多个域名,之间用空格分开即可,解析时会域名的配置的顺序分别去解析。
比如:ping mcp
会自动去解析mcp.toft.tk

一个很自然的问题:如果hosts和resolv.con两个都配置了,会以谁的解析结果为准
更多内容…

分类: 工作 标签: , , ,

【内训】误删日志恢复及运行目录确定

2014年1月26日 没有评论

内训1:误删日志恢复及运行目录确定。

case 1:
运行着的服务产生的日志,被误删除,怎么找回来。
步骤:
1、先用top或ps找到服务的进程编号:pid
2、xxxxx代表找到的那个pid,找到它下面对应的被删除但还被占用的文件,lsof -p xxxxx | grep deleted
3、在输出结果中,找到日志所在的那一行,找到第四列的数值,比如:115w,假设此值为yyy即115
4、查看相应的日志文件:cat /proc/xxxxx/fd/yyy
或者输出到另一文件:cat /proc/xxxxx/fd/yyy > /tmp/zzz.log
完成。

case 2:
有多个雷同进程,看不出来其所在目录,比如下面这个

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                              
 8669 root      20   0 3345m 507m  11m S  0.0  3.2  56:53.80 java -cp .:./../lib/*:./../bin -server -Xmx1024m -Xms1024m 

步骤:
1、先用top或ps找到服务的进程编号xxxx,比如:8669
2、看lsof的cwd的NAME,一般在标题下的第一行:lsof -p xxxx | head -n 2
还可以用更傻一些的方法:lsof -p xxxx | grep cwd
最后那个NAME列对应的值就是这个进程的工作目录。
更多内容…

分类: 工作 标签: , ,

MySQL类型长度误区

2014年1月14日 没有评论

今天又碰到这种疑问,老调重弹,记录一下:
1、数值类型中指定的长度仅用于展示,不是值域限制。值域限制仅与类型及是否带符号有关,具体如下:
类型 字节 最小值 最大值
(带符号的/无符号的) (带符号的/无符号的)
TINYINT 1 -128 127
0 255
SMALLINT 2 -32768 32767
0 65535
MEDIUMINT 3 -8388608 8388607
0 16777215
INT 4 -2147483648 2147483647
0 4294967295
BIGINT 8 -9223372036854775808 9223372036854775807
0 18446744073709551615

2、字符串类型中(char和varchar),指定的长度为字符数,不是字节数,与列的字符集有关。
比如:MySQL必须为一个CHAR(10) CHARACTER SET utf8列预备30个字节,因为这是可能的最大长度。而VARCHAR(10)是动态的,只占1+3*实际字符数。

分类: 工作 标签: , , , ,

Android的https请求有机率连接失败

2014年1月7日 没有评论

很久之前的问题,印象中写过blog存档,今天翻了一下,发现没了,只能按记忆写一下,当初抓的包和分析的几种case也丢了。

问题:Android客户端访问https服务的时候,机率性连接失败,然后忽然在某个时候成功(大概是卡了十分钟以后)。iPhone客户端正常。
想当然的会认为是Android客户端层面的问题,因为iPhone正常。

分析过程:抓包发现Android的tcp报文带了TS(timestamp),而iPhone没带。
处理结果:把第一层反向代理上的timestamp关掉,以解决此问题。
更多内容…

分类: 工作 标签: , , ,

JavaApplication进程不自动结束

2014年1月6日 没有评论

今天发现线上一台服务器上一个用crontab周期性执行的Java Application同时存在多个进程。
细查了一下,发现相应的任务执行完成后,进程未终止。
因为代码中有大量线程的使用,怀疑是有用户线程(非守护线程)在运行。
遍历了一下,把所有的new Thread后都加上或改成置为守护线程:

                Thread thread = new Thread(r);
                thread.setDaemon(true);

关于thread.setDaemon的说明如下,大意是当前所有的线程都是守护线程时,进程结束。

void java.lang.Thread.setDaemon(boolean on)

Marks this thread as either a daemon thread or a user thread. The Java Virtual Machine exits when the only threads running are all daemon threads. 

This method must be called before the thread is started. 

This method first calls the checkAccess method of this thread with no arguments. This may result in throwing a SecurityException (in the current thread). 

Parameters:
on if true, marks this thread as a daemon thread.
Throws:
IllegalThreadStateException - if this thread is active.
SecurityException - if the current thread cannot modify this thread.
See Also:
isDaemon()
checkAccess

改完后测试,问题依旧。
更多内容…