@格拉汉姆那里的乐趣在哪里?所以我会分享我的经验,以防其他人到达这里。我想我的例子是我的'免费'设备达到了授权CPU /内存使用的上限。什么都没有真正跳出来,并大喊“你达到了极限”,但很明显,有些事情是错误的。我对结果非常满意,很高兴我坚持下来。我已经学到了很多关于使用微薄的$$资源部署到在线服务器的信息。
一般故障说明开始here.
首先,我很难关闭服务器与$rhc app-force-stop <app_name>
之后,我能够重新启动系统,它会正常工作。在我的情况下,我试图做太多与我支付的服务器的大小(免费!)免费服务器包括512Mb公羊和1千兆存储。我试图在那里运行Node,一个MongoDB和一个Cron盒式磁带。另外,我有大量的异步输入/输出,并建立了相当大的堆栈。后视,不聪明。
错误检测并不容易。我没有从日志文件中学到任何东西。通常,当出现问题时,他们只是停止录音。
有11项测试要做。首先通过SSH和您的命令行工具登录到服务器。请注意,没有什么神奇的“你搞砸了这里的消息”你必须看看你的使用情况,并将其与你的授权使用水平进行比较。所以是的,这花了我一段时间,但我记录了我的笔记。这里是与他人分享的好地方。这次练习我学到了很多东西。祝你好运。 (哦,在我的情况下,我删除了cron墨盒和mongodb墨盒,我在mlab.com上托管数据库,从我的其他项目中可以访问该数据库。)对我有利。 (结果应该是零......)
oo-cgroup-read memory.failcnt // my results --> 160031
oo-cgroup-read memory.memsw.failcnt // my resluts --> 8572
2)检查磁盘配额
[xyz-abc.rhcloud.com 5xxx3]\> quota -s
Disk quotas for user 5xxx3 (uid 3488):
Filesystem blocks quota limit grace files quota limit grace
/dev/mapper/EBSStore01-user_home01
608M 0 1024M 12664 0 80000
3)检查您的实际磁盘使用情况。 (DU在人类可读的格式(目录(-s)-h的=磁盘使用 萨姆:字节,千字节,兆字节,技嘉,TB的和拍字节):)
du -sh ~
du: cannot read directory `/var/lib/openshift/5xxx3/.tmp': Permission denied
du: cannot read directory `/var/lib/openshift/5xxx3/.sandbox': Permission denied
du: cannot read directory `/var/lib/openshift/5xxx3/.ssh': Permission denied
du: cannot read directory `/var/lib/openshift/5xxx3/.gearstats': Permission denied
607M /var/lib/openshift/5xxx3/
4)名单打开的文件(lsof的是一个含有“列表打开文件”的命令,在许多类Unix系统中用于报告所有打开的 文件列表以及打开它们的进程。-n不解析主机名(不支持DNS)-P不支持解决端口 名(名单端口号,而不是它的名字)。)
lsof -n -P
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mongod 471639 3488 11u IPv4 423798423 0t0 TCP 127.x.y.z:27017 (LISTEN)
node 475151 3488 10u IPv4 423815802 0t0 TCP 127.x.y.z:8080 (LISTEN)
5)显示顶部CPU密集型进程(上提供(经常刷新)当前正在运行的大部分CPU密集型进程。你不需要在 包括一个 - 之前的选项。 -b以批处理模式运行;不要接受命令行输入。用于将 输出发送到其他命令或文件。 -n num更新显示次数,然后退出。)
top -b -n 1
top - 00:48:37 up 13 days, 23:52, 0 users, load average: 2.91, 2.27, 2.09
Tasks: 13 total, 1 running, 12 sleeping, 0 stopped, 0 zombie
Cpu(s): 11.6%us, 10.0%sy, 0.1%ni, 77.5%id, 0.5%wa, 0.0%hi, 0.2%si, 0.1%st
Mem: 15297608k total, 14537912k used, 759696k free, 36456k buffers
Swap: 52428792k total, 16372136k used, 36056656k free, 2720680k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
60898 3488 20 0 12800 968 744 R 1.9 0.0 0:00.02 top
55776 3488 20 0 106m 2740 808 S 0.0 0.0 0:00.00 sshd
55779 3488 20 0 104m 2260 1432 S 0.0 0.0 0:00.09 bash
432471 3488 20 0 106m 888 884 S 0.0 0.0 0:00.00 sshd
432475 3488 20 0 55144 1540 1536 S 0.0 0.0 0:00.11 sftp-server
471611 3488 20 0 9508 412 404 S 0.0 0.0 0:00.00 control
471612 3488 20 0 181m 2152 1720 S 0.0 0.0 0:00.01 logshifter
471624 3488 20 0 4072 456 448 S 0.0 0.0 0:00.00 scl
471625 3488 20 0 9236 812 808 S 0.0 0.0 0:00.00 bash
471639 3488 20 0 373m 14m 13m S 0.0 0.1 0:03.53 mongod
475123 3488 20 0 778m 5264 5172 S 0.0 0.0 0:00.08 node
475124 3488 20 0 117m 2148 1708 S 0.0 0.0 0:00.00 logshifter
475151 3488 20 0 863m 114m 6776 S 0.0 0.8 0:04.10 node
6)查看内存使用情况。 (free - 显示关于内存使用情况的统计信息:内核使用的全部空闲,已用,物理,交换,共享和缓冲区 选项:-b以字节为单位计算内存-k缺省值以千字节为单位计算内存-m计算内存以兆字节为单位。)
free
total used free shared buffers cached
Mem: 15297608 14767896 529712 766468 36484 2746820
-/+ buffers/cache: 11984592 3313016
Swap: 52428792 16334312 36094480
这是我误入歧途的地方。仍然有一点点的自由空间,但是当我在做一个密集的I/O时我不会花太多时间,因为我将在这里快速地向南进发。当发生这种情况时,我根本没有看到任何错误日志/消息。事情停止工作。
7)检查你的插座。 (SS - 插座统计输出将包含所有的TCP,UDP和Unix套接字连接的详细信息。)
ss
State Recv-Q Send-Q Local Address:Port Peer Address:Port
(在这种情况下没有打开插座..上面的线是刚刚列标题..)
8)检查VMstat。 (vmstat - 内存,进程,寻呼等摘要信息) - 空闲/空闲内存空间量 si - 以千字节为单位从磁盘每隔一秒钟刷新一次 - 所以 - 以秒为单位每秒刷新到磁盘)
vmstat
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 16248996 425248 33476 2946912 88 90 321 247 4 3 12 10 78 0 0
9)检查I/O统计。信息(iostat - 中央处理单元(CPU)的统计信息和输入/输出统计信息设备和分区。)
iostat
Linux 2.6.32-573.12.1.el6.x86_64 (ex-std-node842.prod.rhcloud.com) 03/14/2016 _x86_64_ (4 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
11.60 0.12 10.21 0.49 0.06 77.52
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
xvda 6.56 197.23 147.83 238703267 178916836
xvdf 15.08 337.29 347.44 408209376 420504392
xvdg 15.13 337.45 347.44 408413143 420502512
xvdp 65.18 1603.17 1060.59 1940282568 1283607613
dm-0 7.97 108.87 33.25 131768290 40238544
dm-1 70.00 1574.18 1060.36 1905191416 1283329611
dm-2 3.48 87.89 114.58 106366791 138678084
10)(的mpstat - 报告处理器相关的统计数据)
mpstat
Linux 2.6.32-573.12.1.el6.x86_64 (ex-std-node842.prod.rhcloud.com) 03/14/2016 _x86_64_ (4 CPU)
01:10:59 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
01:10:59 AM all 11.60 0.12 10.01 0.49 0.00 0.21 0.06 0.00 77.52
11)用户限制。 (ulimit用户限制 - 限制系统范围资源的使用-a报告所有当前限制)
ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 59663
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 10240
cpu time (seconds, -t) unlimited
max user processes (-u) 350
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
今天我看到完全一样的东西。他们的服务器系统可能正在发生什么? – zipzit
我有一个要求:你会RHC进入你的装备,然后运行:'oo-cgroup-read memory.failcnt'然后是'oo-cgroup-read memory.memsw.failcnt'并报告结果。两者的结果应该为零。如果非零表示您正在记忆+交换限制。 – zipzit