记录学习过程中的点点滴滴
2011年八月
debian系统sshd连接慢的解决办法
八 26th
最近客户端连debian下sshd很慢,每次都需要等待半分钟左右,今天终于无法忍受了,上网找了下资料,把这个问题解决了
原因:
主要是debian在默认情况下开启了dns的反向解析,这个比较耗时
解决方法:
1. 编辑/etc/nsswitch.conf 找到hosts行,替换为
hosts: files dns [NOTFOUND=return]
2. 查看/etc/resolv.conf文件,查看dns地址是否设置正确,如果没有用,直接注掉即可
3. 重启sshd : 先kill掉,然后/usr/sbin/sshd 启功即可
查看 CPU, Memory, I/O and NetFlow[转载]
八 10th
原文地址:http://blogread.cn/it/article.php?id=3908&f=sa
iostat 查看磁盘 I/O
[root@localhost ~]# iostat -d -x 2 extended device statistics device mgr/s mgw/s r/s w/s kr/s kw/s size queue wait svc_t %b hda 0 0 0.0 0.9 0.1 5.4 6.3 0.0 4.7 0.9 0 extended device statistics device mgr/s mgw/s r/s w/s kr/s kw/s size queue wait svc_t %b hda 0 3 0.0 2.0 0.0 20.0 10.0 0.0 0.8 0.5 0 ......
命令释意: 查看磁盘 I/0 情况,且每两秒刷新一次
[root@localhost ~]# vmstat 5 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 284 68700 165876 416748 0 0 0 5 1 1 0 0 100 0 0 ......
命令释意: 查看CPU使用情况的命令, 每 5 秒刷新一次,最右侧列为 CPU 的占用率的数据
top 查看进程占有率
[root@localhost ~]# top
然后在 top 的命令内部命令栏输入shift+p or P
top - 13:38:52 up 102 days, 4:17, 1 user, load average: 0.00, 0.00, 0.00 Tasks: 81 total, 2 running, 79 sleeping, 0 stopped, 0 zombie Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 1035292k total, 966592k used, 68700k free, 165876k buffers Swap: 2096472k total, 284k used, 2096188k free, 416760k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 4875 root 15 0 2192 1000 800 R 0.3 0.1 0:00.15 top 1 root 15 0 2060 620 532 S 0.0 0.1 0:01.65 init 2 root RT -5 0 0 0 S 0.0 0.0 0:00.00 migration/0 .......
命令释意: 查看进程处理器占用率情况,并对其进行排序
free 查看内存使用情况
[root@localhost ~]# free total used free shared buffers cached Mem: 1035292 966592 68700 0 165876 416768 -/+ buffers/cache: 383948 651344 Swap: 2096472 284 2096188
命令释意: 查看内存使用情况
top 查看进程内存使用
[root@localhost ~]# top
然后在 top 的命令内部命令栏输入shift+m or M
top - 13:48:52 up 102 days, 4:27, 1 user, load average: 0.00, 0.01, 0.00 Tasks: 81 total, 2 running, 79 sleeping, 0 stopped, 0 zombie Cpu(s): 0.0%us, 0.3%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 1035292k total, 966592k used, 68700k free, 165876k buffers Swap: 2096472k total, 284k used, 2096188k free, 416784k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 4128 root 34 19 280m 266m 2112 S 0.0 26.4 1:48.40 yum-updatesd 8314 www 18 0 171m 34m 34m S 0.0 3.4 0:06.03 memcacheq 8280 www 15 0 88084 34m 588 S 0.0 3.4 0:01.23 memcached 10907 mysql 15 0 122m 16m 3892 S 0.0 1.7 0:25.29 mysqld ......
命令释意: 查看进程内存占用率情况,并对其进行排序
更多 >
[编程之美]随机数范围扩展方法总结
八 3rd
问题描述
已知random3()这个随机数产生器生成[1, 3]范围的随机数,请用random3()构造random5()函数,生成[1, 5]的随机数?
问题分析
如何从[1-3]范围的数构造更大范围的数呢?同时满足这个更大范围的数出现概率是相同的,可以想到的运算包括两种:加法和乘法
考虑下面的表达式:
3 * (random3() – 1) + random3();
可以计算得到上述表达式的范围是[1, 9] 而且数的出现概率是相同的,即1/9
下面考虑如何从[1, 9]范围的数生成[1, 5]的数呢?
可以想到的方法就是 rejection sampling 方法,即生成[1, 9]的随机数,如果数的范围不在[1, 5]内,则重新取样
解决方法
int random5() { int val = 0; do { val = 3 * (random3() - 1) + random3(); } while (val > 5); return val; }
归纳总结
将这个问题进一步抽象,已知random_m()随机数生成器的范围是[1, m] 求random_n()生成[1, n]范围的函数,m < n && n <= m *m
一般解法:
int random_n() { int val = 0 ; int t; // t为n最大倍数,且满足 t <= m * m do { val = m * (random_m() - 1) + random_m(); } while (val > t); return val; }
参考资料:
http://stackoverflow.com/questions/137783/expand-a-random-range-from-1-5-to-1-7
近期评论