欧美vvv,亚洲第一成人在线,亚洲成人欧美日韩在线观看,日本猛少妇猛色XXXXX猛叫

新聞資訊

    服務(wù)器部署遇到的奇奇怪怪問題:和mysql明明啟動了,過一會之后會直接自己殺掉進(jìn)程,自己取消掉

    問題解決:

    應(yīng)用部署在線下服務(wù)器上,線下服務(wù)器,相對來說配置低一些,同時可能和其它的服務(wù)部署在一起。后來遇到一個比較怪異的問題:

    應(yīng)用跑一段時間,進(jìn)程就掛掉了。

    而且這個沒有什么規(guī)律,不是在特定操作執(zhí)行時,或者特定時間出現(xiàn)。同時沒有任何的日志。本來以為是其它的服務(wù)的人把我們的不小心kill掉了,但kill的有點(diǎn)太頻繁了,同時和QA同學(xué)了解到,在線下服務(wù)器上的其他服務(wù),目前都沒有操作過,排除了人為的可能。

    剩下的就只能從應(yīng)用自身的問題入手了。但整個進(jìn)程掛掉的時候,并沒有任何日志生成,同時也沒有生成Crash文件。還嘗試在啟動腳本中增加

    -XX:+,想要分析下堆內(nèi)數(shù)據(jù)應(yīng)用軟件會使tomcat服務(wù)器崩潰嗎,進(jìn)程退出時也是什么都沒生成。

    這時就只能請教萬能的網(wǎng)絡(luò)了,之后了解到一個Linux OOM 。按照這個思路和提供的方式去查看了服務(wù)器的日志,果然問題在這兒。

    Linux OOM

    在這里有一個關(guān)于OOM 的描述

    It is the job of the linux ‘oom ’ to one or more in order to free up for the when all else fails. It will also kill any the same as the , for . Any may be the oom if the value of its /proc// is set to the ( as -17).

    長話短說就是,Linux 的這個,會在內(nèi)存不足的時候kill掉任何不受保護(hù)的進(jìn)程,從而釋放內(nèi)存,保證的運(yùn)行。

    要讓自己的進(jìn)程成為一個受保護(hù)的進(jìn)程,請注意這一句:

    Any may be the oom if the value of its /proc// is set to the ( as -17).

    操作方式上可以使用

    echo -17 > /proc/$PID/

    更多可以參考這個網(wǎng)頁(OOM - How To OOM in Linux - )

    ,寫一個定時任務(wù),執(zhí)行腳本,把當(dāng)前進(jìn)程的Pid加到這個里。

    那怎么判斷進(jìn)程是不是被OOM 給干掉了呢?

    可以從/var/log/這個文件里查找下,是否有之前pid對應(yīng)的進(jìn)程Kill信息,或者進(jìn)程名,比如我們這里說的是Java應(yīng)用,就直接查Java的就可以,像

    這樣的內(nèi)容,

    "Out of : Kill 31201 (java) score 783 or child

    如果沒有這個文件的權(quán)限應(yīng)用軟件會使tomcat服務(wù)器崩潰嗎,也可以直接使用如下命令

    dmesg | egrep -i ‘ ’

    會有類似這樣的輸出

    13090 (java)

    知道是被OOM 干掉的,那下一步就只能是保證環(huán)境的內(nèi)存夠用了,少被其它程序占用,加到受保護(hù)進(jìn)程里,或者直接換個內(nèi)存充足的服務(wù)器吧。 _.

    fatal error: runtime: out of memory
    runtime stack:
    runtime.throw(0x55d9bb6d4f5e, 0x16)
            /usr/local/go/src/runtime/panic.go:774 +0x74 fp=0x7fff5656a668 sp=0x7fff5656a638 pc=0x55d9ba18bb14
    runtime.sysMap(0xc000000000, 0x4000000, 0x55d9bd3006d8)
            /usr/local/go/src/runtime/mem_linux.go:169 +0xc7 fp=0x7fff5656a6a8 sp=0x7fff5656a668 pc=0x55d9ba175657
    runtime.(*mheap).sysAlloc(0x55d9bd2e7340, 0x2000, 0x0, 0x0)
            /usr/local/go/src/runtime/malloc.go:701 +0x1cf fp=0x7fff5656a750 sp=0x7fff5656a6a8 pc=0x55d9ba16855f
    runtime.(*mheap).grow(0x55d9bd2e7340, 0x1, 0xffffffff)
            /usr/local/go/src/runtime/mheap.go:1255 +0xa5 fp=0x7fff5656a7a0 sp=0x7fff5656a750 pc=0x55d9ba1837f5
    runtime.(*mheap).allocSpanLocked(0x55d9bd2e7340, 0x1, 0x55d9bd3006e8, 0x1)
            /usr/local/go/src/runtime/mheap.go:1170 +0x268 fp=0x7fff5656a820 sp=0x7fff5656a7a0 pc=0x55d9ba183688
    runtime.(*mheap).alloc_m(0x55d9bd2e7340, 0x1, 0x55d9ba1b002a, 0x0)
            /usr/local/go/src/runtime/mheap.go:1022 +0xc6 fp=0x7fff5656a870 sp=0x7fff5656a820 pc=0x55d9ba182f26
    runtime.(*mheap).alloc.func1()
            /usr/local/go/src/runtime/mheap.go:1093 +0x4e fp=0x7fff5656a8a8 sp=0x7fff5656a870 pc=0x55d9ba1b50ae
    runtime.(*mheap).alloc(0x55d9bd2e7340, 0x1, 0x1002a, 0x40000)
            /usr/local/go/src/runtime/mheap.go:1092 +0x8c fp=0x7fff5656a8f8 sp=0x7fff5656a8a8 pc=0x55d9ba18320c
    runtime.(*mcentral).grow(0x55d9bd2e8178, 0x0)
            /usr/local/go/src/runtime/mcentral.go:255 +0x7d fp=0x7fff5656a938 sp=0x7fff5656a8f8 pc=0x55d9ba17507d
    runtime.(*mcentral).cacheSpan(0x55d9bd2e8178, 0x7f32461da000)
            /usr/local/go/src/runtime/mcentral.go:106 +0x300 fp=0x7fff5656a998 sp=0x7fff5656a938 pc=0x55d9ba174ba0
    runtime.(*mcache).refill(0x7f32461da008, 0x2a)
            /usr/local/go/src/runtime/mcache.go:138 +0x87 fp=0x7fff5656a9b8 sp=0x7fff5656a998 pc=0x55d9ba174637
    runtime.(*mcache).nextFree(0x7f32461da008, 0x55d9bd30072a, 0x7f32461da008, 0x8, 0xfffffffffffffff8)
            /usr/local/go/src/runtime/malloc.go:854 +0x89 fp=0x7fff5656a9f0 sp=0x7fff5656a9b8 pc=0x55d9ba168d89
    runtime.mallocgc(0x180, 0x55d9bc3452c0, 0x1, 0x55d9bd300740)
            /usr/local/go/src/runtime/malloc.go:1022 +0x7a5 fp=0x7fff5656aa90 sp=0x7fff5656a9f0 pc=0x55d9ba1696d5
    runtime.newobject(0x55d9bc3452c0, 0x4000)
            /usr/local/go/src/runtime/malloc.go:1151 +0x3a fp=0x7fff5656aac0 sp=0x7fff5656aa90 pc=0x55d9ba169ada
    runtime.malg(0x61c400008000, 0x55d9bd2e99e8)
            /usr/local/go/src/runtime/proc.go:3238 +0x33 fp=0x7fff5656ab00 sp=0x7fff5656aac0 pc=0x55d9ba1950a3
    runtime.mpreinit(...)
            /usr/local/go/src/runtime/os_linux.go:324
    runtime.mcommoninit(0x55d9bd2e1600)
            /usr/local/go/src/runtime/proc.go:626 +0xc6 fp=0x7fff5656ab38 sp=0x7fff5656ab00 pc=0x55d9ba18e8d6
    runtime.schedinit()
            /usr/local/go/src/runtime/proc.go:543 +0x76 fp=0x7fff5656ab90 sp=0x7fff5656ab38 pc=0x55d9ba18e536
    runtime.rt0_go(0x7fff5656ac98, 0x3, 0x7fff5656ac98, 0x0, 0x7f324583f6a3, 0x0, 0x7fff5656ac98, 0x300200000, 0x55d9ba1b7400, 0x0, ...)
            /usr/local/go/src/runtime/asm_amd64.s:214 +0x129 fp=0x7fff5656ab98 sp=0x7fff5656ab90 pc=0x55d9ba1b7539
    

    因此,不能這樣解決…

    檢查系統(tǒng)的Swap信息:swapon -s 
    或者free -m
                 total       used       free     shared    buffers     cached
    Mem:          3953        315       3637          8         11        107
    -/+ buffers/cache:        196       3756
    Swap:            0          0       4095
    

    檢查磁盤可用區(qū)間:df -h
    Filesystem      Size  Used Avail Use% Mounted on
    /dev/vda1        59G  1.5G   55G   3% /
    devtmpfs        2.0G     0  2.0G   0% /dev
    tmpfs           2.0G     0  2.0G   0% /dev/shm
    tmpfs           2.0G  8.3M  2.0G   1% /run
    tmpfs           2.0G     0  2.0G   0% /sys/fs/cgroup
    這里的-h標(biāo)記是為了告訴dh將信息輸出為對人類友好的格式,比如以MB或GB為單位輸出空間使用和空余情況,而不是直接輸出內(nèi)存塊的個數(shù)。
    

    接下來我們將在文件系統(tǒng)上創(chuàng)建swap文件。我們要在根目錄(/)下創(chuàng)建一個名叫swapfile的文件,當(dāng)然你也可以選擇你喜歡的文件名。該文件分配的空間將等于我們需要的swap空間。
    最快捷的創(chuàng)建方式是fallocate命令,該命令能夠創(chuàng)建一個預(yù)分配指定大小空間的文件。輸入如下指令創(chuàng)建一個4GB的文件:
    sudo fallocate -l 4G /swapfile
    

    該swap文件將立即創(chuàng)建完畢。我們可以用ls命令檢查文件大小:
    ls -lh /swapfile
    -rw-r--r-- 1 root root 4.0G Oct 30 11:00 /swapfile
    

    首先我們需要更改swap文件的權(quán)限,確保只有root才可讀,否則會有很大的安全隱患。使用chmod命令進(jìn)行權(quán)限操作:
    sudo chmod 600 /swapfile
    該文件的讀寫都只有root才能操作。使用ls -lh命令檢查一下:
    ls -lh /swapfile
    -rw------- 1 root root 4.0G Oct 30 11:00 /swapfile
    

    使用如下命令告知系統(tǒng)將該文件用于swap:
    sudo mkswap /swapfile
    Setting up swapspace version 1, size = 4194300 KiB
    no label, UUID=b99230bb-21af-47bc-8c37-de41129c39bf
    

    這個swap文件就可以作為swap空間使用了。輸入如下命令開始使用該swap:
    sudo swapon /swapfile
    輸入如下命令來確認(rèn)一下設(shè)置是否已經(jīng)生效:
    swapon -s
    Filename                Type        Size    Used    Priority
    /swapfile               file        4194300 0     -1
    

    free工具確認(rèn):
    free -m
                 total       used       free     shared    buffers     cached
    Mem:          3953        315       3637          8         11        107
    -/+ buffers/cache:        196       3756
    Swap:         4095          0       4095
    

    開機(jī)自啟:
    至此我們已經(jīng)在系統(tǒng)中啟用了swap文件,然而一旦系統(tǒng)重啟后,服務(wù)器還不能自動啟用該文件。要讓系統(tǒng)在重啟后自動生效swap,我們可以通過修改fstab文件來實現(xiàn)(這是一個管理文件系統(tǒng)和分區(qū)的表)。
    用sudo權(quán)限打開該文件編輯:
    sudo vim /etc/fstab
    在文件末尾加入下面這行內(nèi)容,告訴操作系統(tǒng)自動使用剛才創(chuàng)建的swap文件:
    /swapfile   swap    swap    sw  0   0
    

    這個swap文件就可以作為swap空間使用了。輸入如下命令開始使用該swap:
    sudo swapon /swapfile
    輸入如下命令來確認(rèn)一下設(shè)置是否已經(jīng)生效:
    swapon -s
    Filename                Type        Size    Used    Priority
    /swapfile               file        4194300 0     -1
    

網(wǎng)站首頁   |    關(guān)于我們   |    公司新聞   |    產(chǎn)品方案   |    用戶案例   |    售后服務(wù)   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區(qū)    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權(quán)所有