random tips on coding, ops, ...

listen() 的 backlog 及 TCP 相关参数

listen 函数的原型为:int listen(int sockfd, int backlog);, 其中 backlog 的解释在 man 2 listen 里说明如下:

The backlog argument defines the maximum length to which  the  queue  of
pending  connections  for  sockfd  may  grow.   If  a connection request
arrives when the queue is full, the client may receive an error with  an
indication  of  ECONNREFUSED  or,  if  the  underlying protocol supports
retransmission, the request may be ignored so that a later reattempt  at
connection succeeds.


......

vCenter Server 恢复

由于停电或其他原因导致的 vCenter Server 非正常关机后,使用 vSphere Client 连接时总是会出错。一个快速解决办法如下:

  1. 登录 https://vcenter.xxxxx.xxxxxxxx.xxx:5480/ ,确认 Server 的运行状态 应该是 Stopped。

  2. 选择 Utilities 处的 “Setup wizard”,单击 Launch,如果之前没有特殊配置则全部 按缺省配置完成该过程。该过程的最后阶段会重新启动 Server 成功。

  3. 通过 vSphere Client 连接,应该可以成功。vCenter Server 的许可证可能需要重新 关联。

......

各种软件的离线下载地址

Google Earth Windows 版 Mac 版

Google Chrome 将下载 URL 中的 ChromeSetup.exe 改为 ChromeStandaloneSetup.exe

Skype 将下载URL中的 SkypeSetup.exe 改为 SkypeSetupFull.exe,注意需要翻墙。

29 Apr 2014

......

策略路由匹配顺序

首先按路由策略优先级找到匹配的策略,如果优先级相同则按顺讯匹配。

路由则按最长(掩码)匹配。

......

由段错误信息定位错误代码

段错误的定义请参考维基。 对应用层代码而言,一般来说,当进程试图访问未被操作系统允许访问(或映射)的地址 或者尝试更新只读内存区时,操作系统会执行相应的保护,发送信号(SIGSEGV) 给该进程。如果进程未安装处理该信号的句柄,则缺省动作是程序非正常退出。对 x86 下的Linux系统,如果设置了 sysctl 变量 debug.exception-trace 为 1,则内核同时会 输出如下的类似信息:

slapd[6293]: segfault at 0 ip 00007ff6877cb1ed sp 00007ff6477fd4d0 error 4 in libldap_r-2.4.so.2.9.1[7ff687789000+56000]
......

Linux 下的 iSCSI initiator 部署

以 Ubuntu 系统上部署 iSCSI initiator 为例,首先执行 apt-get install open-iscsi multipath-tools 安装必要的软件。前者为 iSCSI initiator 软件,后者提供 multipath 支持。

iSCSI initiator 的部署过程非常简单,依次如下操作即可:

  1. 发现 target
\# iscsiadm -m discovery -t sendtargets -p 192.168.2.200:3260
192.168.2.201:3260,0 iqn.1997-05.xxxxxx:default-target
192.168.2.200:3260,0 iqn.1997-05.xxxxxx:default-target
  

这里可以看到该 target 有两个 ip 地址,可以配置 multipath 支持。

......

rsyslog 队列配置

rsyslog 的基本配置请参考这里, 本文仅覆盖队列相关的配置。 官方文档在这里

下文出现的配置指令中,请将 “<object>” 根据情况替换为 “MainMsg” 或 “Action”。 前者对应主消息队列,后者对应将要创建的动作对应的队列。

每定义一个动作都会相应的创建一个动作队列,缺省情况下动作队列为 direct 模式(下详),等价于无队列。在动作队列创建其的配置参数会被恢复为缺省值, 这样就可以针对不同的动作进行不同的配置。

可用的队列类型为 $<object>QueueType [Direct|Disk|FixedArray|LinkedList],分别解释如下:

......

vimdiff

参考 技巧:Vimdiff 使用

  1. 启动

    vimdiff file1 file2

    vim -d file1 file2

    vim file1 在命令行模式下输入 “:vertical diffsplit file2”

......

MongoDB replset 改名操作

操作过程如下:

  1. 修改 MongoDB 服务启动配置,取消 –replSet 选项后重新启动 MongoDB 服务

  2. 更新各服务器上的 local.system.replset,其中 replSet 的名字对应 ‘_id’ 字段。
    \# mongo
    > use local
    switched to db local
    > db.system.replset.find()
    ....
    > db.system.replset.update()
    
  3. 修改 MongoDB 服务启动配置,用新的名字恢复 –replSet 选项后重新启动 MongoDB 服务
......

链路层地址(ARP/Neighbor)相关信息

Linux 下查看 ARP 相关信息的命令为:

# arp -an
? (10.0.0.2) at 00:05:b7:09:4f:29 [ether] on eth0
? (10.0.0.8) at  on eth0
</pre>

如果希望查看更详细的数据或者查看 IPv6 相关的信息则需要使用 `ip` 命令:
# ip -s neighbor show
fe80::3a22:d6ff:feb5:30c7 dev eth0 lladdr 38:22:d6:b5:30:c7 router used 1127/1127/1110 probes 1 STALE
10.0.0.203 dev eth0 lladdr 00:1e:4f:ea:f2:2e ref 1 used 15/14/15 probes 4 REACHABLE
......