怎样才能打开apache的server-status呢?
首先你得编译apache的一个模块,你可以检查你的配置文件(>我认为通俗来讲主要是以下三个方面:
1软件安装包
实际就是你的软件文件,我们外部看是apk,内部主要是代码的dex文件,文件,so库文件。实际占用内存的大小不大于你下载APP时商店显示的文件大小。大部分会在启动时将文件映射到内存当中,此时才会真正的占用内存,少部分运行时需要才进行加载。如,so库,字体库文件目前看,稍大的APP都接近100M。
2 动态下载的程序文件、等资源文件
Android的限制相对宽松,稍大一点到厂商为了减少程序资源包文件大小,都会采用动态下载的方式。比如把运行需要的so文件放在服务器,需要时下载到本地,然后加载到内存运行起来。另外一个大头,就是文件,一不小心一张占用内存就达二三十M内存。如果厂商在这块没有注重优化,可能会占用达几百M。
3 动态申请的内存
前面说的主要资源文件映射到内存时占用的内存,除了这一部分。还有大量的内存是在运行时动态申请的。比如你有运行时数据需要临时保存,如果我们写到文件会比较耗时。此时我们会向系统申请内存,系统分配堆区的内存给到应用。但是,如果程序出现bug。也就是说,申请的内存没能释放,那么随着运行时间的累积,占用的内存会越来越大。这种问题是相当严重的,会一直到内存不足时系统抛出内存不足异常,并杀死应用。这一块来个几百M也是极有可能的。-SO是-S和-O的缩写
----------------
-S
--server-response
Print the headers sent by >安装好nodejs之后,我们需要安装“ws”,也就是我们的websocket实现,安装方法很简单,在终端或者命令行中输入:
npm
install
ws
,等待安装完成就可以了。
接下来,我们需要启动我们的websocket服务。首先,我们需要构建自己的>从下面的的命令中,我们可以列出可执行文件或者共享对象的动态从属关系,这玩意没了,你的什么ls,cd什么的命令就都费了,如果ldso1文件被破坏了,系统肯定无法正常启动。
/usr/bin/ldd [filename]
/ List the dynamic dependencies of executable files /
# /usr/bin/ldd /usr/bin/cat
libcso1 => /usr/lib/libcso1
libdlso1 => /usr/lib/libdlso1
/usr/platform/SUNW,Ultra-1/lib/libc_psrso1
# ldd /usr/bin/ls
libcso1 => /usr/lib/libcso1
libdlso1 => /usr/lib/libdlso1
/usr/platform/SUNW,Ultra-1/lib/libc_psrso1
# ldd /usr/bin/cp
libcso1 => /usr/lib/libcso1
libdlso1 => /usr/lib/libdlso1
/usr/platform/SUNW,Ultra-1/lib/libc_psrso1
二、ldso1文件损坏或丢失解决的办法
1.如果意外的/usr/lib/ldso1损坏或丢失,系统没有正常启动的情况下:
执行命令都会出现错误信息:
#reboot
Reboot :can not find /usr/lib/ldso1
#find
Find: /usr/lib/ldso1
#ls
Ls: can not find can not find
这时,千万不要重启动,立即用/usr/sbin/static/mv、/usr/sbin/static/cp命令恢复 :
#/sbin/static/cp /etc/lib/ldso1 /usr/lib/
经过实验,系统恢复正常!这时,你试试如下命令,就能体会到为什么了。
---------------------------------------------------------------------------
# ls /usr/sbin/static
cp ln mv rcp tar
SUN的工程师非常聪明,为了防备了这个情况, 做了以上几个不使用动态连接库的命令
#find / -name ldso1 -print
/usr/lib/sparcv9/ldso1
/usr/lib/ldso1
/etc/lib/ldso1
blade% ls -ld /usr/lib/sparcv9/ldso1
-rwxr-xr-x 1 root bin 191672 Jul 28 2001 /usr/lib/sparcv9/ldso1
blade% ls -ld /usr/lib/ldso1
-rwxr-xr-x 1 root bin 196852 Jul 28 2001 /usr/lib/ldso1
blade% ls -ld /etc/lib/ldso1
-rwxr-xr-x 1 root bin 196852 Jul 28 2001 /etc/lib/ldso1
---------------------------------------------------------------------------
从上面的,我们又可以看到,这个库文件,不仅仅在/usr/lib有,在/etc/lib、/usr/lib/sparcv9/下也有,所以你就重新在本机上拷贝一份就行了。这些信息在这个连接库不正常的情况下是看不到的。
2.如果意外的/usr/lib/ldso1损坏或丢失,系统启动的情况下:
错误信息:
Uname:can not find /usr/lib/ldso1
Loadkeys: can not find /usr/lib/ldso1
Killed
Cfsfstype: can not find /usr/lib/ldso1
Expr: can not find /usr/lib/ldso1
Swap: can not find /usr/lib/ldso1
Killed
Fsck: can not find /usr/lib/ldso1
Killed
这时,用光盘启动到单用户下:
ok boot cdrom -s (放入启动安装光盘)
#mount /dev/dsk/c0t0d0s0 /mnt (这里指定原usr目录对应的原始设备名)
# cp /mnt/etc/lib/ldso1 /mnt/lib/(就是将/usr/etc下的这个文件拷贝到/usr/lib下。)
系统重新启动,一切正常!
3如果/usr被改名了情况下,怎么办?
假设/usr改名成了/faint,系统没有启动
马上执行
#/faint/sbin/static/mv /faint /usr
假设/usr改名成了/faint,系统重新启动,这时肯定不能正常启动,同样我们启动到单用户下:
ok boot cdrom -s (放入启动安装光盘)
mount /dev/dsk/c0t0d0s0 /mnt (这里指定原usr目录对应的原始设备名)
mv /mnt/faint /mnt/usr
建议把/usr/sbin/static下的东西拷一份到/sbin下或者其它比较可信的跟/在同一个文件系统下的目录下。以备系统不测
之后,我又进行了多次实验,各个版本系统下的/usr/lib/ldso1文件互相兼容。所以也可以从其他机器拷贝过来。
打开Apache Server Status
如果你的Apache配置文件>
如果Apache没有加载这个模块,如果是linux服务器,就得重新编译Apache,加上--enable-module=so参数即可;如果你是windows系统的话,无需任何编译,只要把刚才时候说的LoadModule status_module modules/mod_statusso这句加上,如果前面有带#号,开启的话,需要将#去除。
配置Apache Server Status
<location /ccvita-server-status>SetHandler server-status
Order Deny,Allow
Deny from all
Allow from
这是一个完整的server-status的配置。
第一行的ccvita-server-status表示以后可以用类似>其实,在服务器的选择上很广,基本上,主流语言都有WebSocket的服务器端实现,而我们作为前端开发工程师,当然要选择现在比较火热的NodeJS作为我们的服务器端环境了。
NodeJS本身并没有原生的WebSocket支持,但是有第三方的实现(大家要是有兴趣的话,完全可以参考WebSocket协议来做自己的实现),我们选择了“ws”作为我们的服务器端实现。
由于本文的重点是讲解WebSocket,所以,对于NodeJS不做过多的介绍,不太熟悉的朋友可以去参考NodeJS入门指南(>
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)