精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Java服務總在半夜掛,背后的真相竟然是...

開發
最近有用戶反饋測試環境Java服務總在凌晨00:00左右掛掉,用戶反饋Java服務沒有定時任務,也沒有流量突增的情況,Jvm配置也合理,莫名其妙就掛了。


問題排查

問題復現

為了復現該問題,寫了個springboot的demo部署在測試環境,其中demo里只做了hello world功能,應用類型為web_tomcat (war包部署),基礎鏡像是base_tomcat/java-centos6-jdk18-60-tom8050-ngx197,鏡像使用的Java版本是1.8.0_60,有了上次 MySQL被kill的經驗,盲猜是linux limit惹的禍,因此將打好的鏡像分別部署了兩批不同的機器,果不其然,新機器當晚掛掉了,老機器服務正常

看一下掛掉的limit設置

排查過程

Java進程會受到limits影響?

按理說Java進程是不會受到系統limit open files(系統最大句柄數)影響的,但是為了驗證這個問題,我們將他修改為正常機器的值,由于demo是web_tomcat應用,沒法修改啟動腳本,因此我們通過prlimit修改java進程的limit

prlimit -p 32672 --nofile=1048576

JJ

結果當晚00:00左右還是掛了,看來open files和java進程掛掉沒關系,看dmesg也沒發現什么問題


Java版本過低導致內存分配不合理?

通過尋求jdos研發組的幫助,jdos研發組的同學認為是java版本的問題,低版本可能沒有限制住申請的內存大小,具體原因如下

https://blog.softwaremill.com/docker-support-in-new-java-8-finally-fd595df0ca54?gi=a0cc6736ed14

異常機器java內存情況

Java服務總在半夜掛,背后的真相竟然是... | 京東云技術團隊_EXEC_05Java服務總在半夜掛,背后的真相竟然是... | 京東云技術團隊_EXEC_05

正常機器java內存情況

Java服務總在半夜掛,背后的真相竟然是... | 京東云技術團隊_定時任務_06Java服務總在半夜掛,背后的真相竟然是... | 京東云技術團隊_定時任務_06

按照這個 文檔描述,使用docker cgroups限制內存可能會導致JVM進程被終止,原因是Java讀取的還是宿主機的CPU,而不是docker cgroups限制的CPU,高版本的Java解決了這個問題,文檔解決方案截圖如下:

Java服務總在半夜掛,背后的真相竟然是... | 京東云技術團隊_Java_07Java服務總在半夜掛,背后的真相竟然是... | 京東云技術團隊_Java_07

對此我們表示懷疑,因為我們的程序里設置了JVM參數

保持著試一試的心態,我們增加了一個實驗組,實驗組使用的Java版本是11.0.8

結果當晚實驗組的Java進程還是死了,看來和Java版本也沒關系

容器上存在定時任務導致的?

由于基礎鏡像是jdos官方提供的鏡像,所以之前從來沒有懷疑過是定時任務的問題,但是現在別無他法了,檢查下容器的定時任務

雖然有定時任務,但是這個執行的時間點和Java掛掉的時間對不上,為此我們決定刪除定時任務試試

結果當晚Java進程還是掛了,并且這次有dmesg的日志,發現Java被kill的同時crond也被kill了,被kill的原因是crond內存過高導致oom

JJ

難道還有系統級cron任務?于是查了一下/etc/crontab,發現果然還有cron任務(這是誰打的鏡像!!!)

這個時間點和Java進程掛掉的時間點吻合,但是問題來了,執行的任務并沒有logrotate.sh這個腳本,應該不會出現問題才對

到底是不是定時任務的問題,我們修改下cron的時間驗證下,調整時間為中午11:00,驗證下Java進程是否會掛,同時使用strace打印進程trace log

果然Java進程在中午11.00掛了,看來真的是cron任務導致的,讓我們一起看一下strace

19:59:01 close(3)                        = 0
19:59:01 stat("/etc/pam.d", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
19:59:01 open("/etc/pam.d/crond", O_RDONLY) = 3
19:59:01 fstat(3, {st_mode=S_IFREG|0644, st_size=293, ...}) = 0
19:59:01 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fd770804000
19:59:01 read(3, "#\n# The PAM configuration file f"..., 4096) = 293
19:59:01 open("/lib64/security/pam_access.so", O_RDONLY) = 5
19:59:01 read(5, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0000\17\0\0\0\0\0\0"..., 832) = 832
19:59:01 fstat(5, {st_mode=S_IFREG|0755, st_size=18552, ...}) = 0
19:59:01 mmap(NULL, 2113800, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0x7fd769322000
19:59:01 mprotect(0x7fd769325000, 2097152, PROT_NONE) = 0
19:59:01 mmap(0x7fd769525000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x3000) = 0x7fd769525000
19:59:01 close(5) = 0
19:59:01 open("/etc/ld.so.cache", O_RDONLY) = 5
19:59:01 fstat(5, {st_mode=S_IFREG|0644, st_size=16203, ...}) = 0
19:59:01 mmap(NULL, 16203, PROT_READ, MAP_PRIVATE, 5, 0) = 0x7fd7707f8000
19:59:01 close(5) = 0
19:59:01 open("/lib64/libnsl.so.1", O_RDONLY) = 5
19:59:01 read(5, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0p@\0\0\0\0\0\0"..., 832) = 832
19:59:01 fstat(5, {st_mode=S_IFREG|0755, st_size=113432, ...}) = 0
19:59:01 mmap(NULL, 2198192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0x7fd769109000
19:59:01 mprotect(0x7fd76911f000, 2093056, PROT_NONE) = 0
19:59:01 mmap(0x7fd76931e000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x15000) = 0x7fd76931e000
19:59:01 mmap(0x7fd769320000, 6832, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fd769320000
19:59:01 close(5) = 0
19:59:01 mprotect(0x7fd76931e000, 4096, PROT_READ) = 0
19:59:01 mprotect(0x7fd769525000, 4096, PROT_READ) = 0
19:59:01 munmap(0x7fd7707f8000, 16203) = 0
19:59:01 open("/etc/pam.d/password-auth", O_RDONLY) = 5
19:59:01 fstat(5, {st_mode=S_IFREG|0644, st_size=692, ...}) = 0
19:59:01 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0)                     = 0x7fd770803000
19:59:01 read(5, "#%PAM-1.0\n# This file is auto-ge"..., 4096) = 692
19:59:01 open("/lib64/security/pam_unix.so", O_RDONLY) = 6
19:59:01 read(6, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\240&\0\0\0\0\0\0"..., 832) = 832
19:59:01 fstat(6, {st_mode=S_IFREG|0755, st_size=51960, ...}) = 0
19:59:01 mmap(NULL, 2196352, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 6, 0) = 0x7fd768ef0000
19:59:01 mprotect(0x7fd768efc000, 2093056, PROT_NONE) = 0
19:59:01 mmap(0x7fd7690fb000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 6, 0xb000) = 0x7fd7690fb000
19:59:01 mmap(0x7fd7690fd000, 45952, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fd7690fd000
19:59:01 close(6)                       = 0
19:59:01 mprotect(0x7fd7690fb000, 4096, PROT_READ) = 0
19:59:01 read(5, "", 4096)              = 0
19:59:01 close(5) = 0
19:59:01 munmap(0x7fd770803000, 4096) = 0
19:59:01 open("/lib64/security/pam_loginuid.so", O_RDONLY) = 5
19:59:01 read(5, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\220\t\0\0\0\0\0\0"..., 832) = 832
19:59:01 fstat(5, {st_mode=S_IFREG|0755, st_size=10240, ...}) = 0
19:59:01 mmap(NULL, 2105480, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0x7fd768ced000
19:59:01 mprotect(0x7fd768cef000, 2093056, PROT_NONE) = 0
19:59:01 mmap(0x7fd768eee000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x1000) = 0x7fd768eee000
19:59:01 close(5) = 0
19:59:01 mprotect(0x7fd768eee000, 4096, PROT_READ) = 0
19:59:01 open("/etc/pam.d/password-auth", O_RDONLY) = 5
19:59:01 fstat(5, {st_mode=S_IFREG|0644, st_size=692, ...}) = 0
19:59:01 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fd770803000
19:59:01 read(5, "#%PAM-1.0\n# This file is auto-ge"..., 4096) = 692
19:59:01 open("/lib64/security/pam_keyinit.so", O_RDONLY) = 6
19:59:01 read(6, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0`\10\0\0\0\0\0\0"..., 832) = 832
19:59:01 fstat(6, {st_mode=S_IFREG|0755, st_size=10224, ...}) = 0
19:59:01 mmap(NULL, 2105488, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 6, 0)                      = 0x7fd768aea000
19:59:01 mprotect(0x7fd768aec000, 2093056, PROT_NONE)                     = 0
19:59:01 mmap(0x7fd768ceb000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 6, 0x1000) = 0x7fd768ceb000
19:59:01 close(6) = 0
19:59:01 mprotect(0x7fd768ceb000, 4096, PROT_READ) = 0
19:59:01 open("/lib64/security/pam_limits.so", O_RDONLY) = 6
19:59:01 read(6, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\320\20\0\0\0\0\0\0"..., 832) = 832
19:59:01 fstat(6, {st_mode=S_IFREG|0755, st_size=18600, ...}) = 0
19:59:01 mmap(NULL, 2113848, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 6, 0) = 0x7fd7688e5000
19:59:01 mprotect(0x7fd7688e9000, 2093056, PROT_NONE) = 0
19:59:01 mmap(0x7fd768ae8000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 6, 0x3000) = 0x7fd768ae8000
19:59:01 close(6) = 0
19:59:01 mprotect(0x7fd768ae8000, 4096, PROT_READ) = 0
19:59:01 open("/lib64/security/pam_succeed_if.so", O_RDONLY) = 6
19:59:01 read(6, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\340\v\0\0\0\0\0\0"..., 832) = 832
19:59:01 fstat(6, {st_mode=S_IFREG|0755, st_size=14384, ...}) = 0
19:59:01 mmap(NULL, 2109624, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 6, 0) = 0x7fd7686e1000
19:59:01 mprotect(0x7fd7686e4000, 2093056, PROT_NONE) = 0
19:59:01 mmap(0x7fd7688e3000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 6, 0x2000) = 0x7fd7688e3000
19:59:01 close(6) = 0
19:59:01 mprotect(0x7fd7688e3000, 4096, PROT_READ)                       = 0
19:59:01 read(5, "", 4096) = 0
19:59:01 close(5)                     = 0
19:59:01 munmap(0x7fd770803000, 4096) = 0
19:59:01 open("/etc/pam.d/password-auth", O_RDONLY)                      = 5
19:59:01 fstat(5, {st_mode=S_IFREG|0644, st_size=692, ...}) = 0
19:59:01 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0)                      = 0x7fd770803000
19:59:01 read(5, "#%PAM-1.0\n# This file is auto-ge"..., 4096) = 692
19:59:01 open("/lib64/security/pam_env.so", O_RDONLY) = 6
19:59:01 read(6, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\300\r\0\0\0\0\0\0"..., 832) = 832
19:59:01 fstat(6, {st_mode=S_IFREG|0755, st_size=18592, ...}) = 0
19:59:01 mmap(NULL, 2113776, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 6, 0)                       = 0x7fd7684dc000
19:59:01 mprotect(0x7fd7684e0000, 2093056, PROT_NONE) = 0
19:59:01 mmap(0x7fd7686df000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 6, 0x3000) = 0x7fd7686df000
19:59:01 close(6) = 0
19:59:01 mprotect(0x7fd7686df000, 4096, PROT_READ)                     = 0
19:59:01 open("/lib64/security/pam_deny.so", O_RDONLY) = 6
19:59:01 read(6, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0000\5\0\0\0\0\0\0"..., 832) = 832
19:59:01 fstat(6, {st_mode=S_IFREG|0755, st_size=5952, ...}) = 0
19:59:01 mmap(NULL, 2101272, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 6, 0)                       = 0x7fd7682da000
19:59:01 mprotect(0x7fd7682db000, 2093056, PROT_NONE) = 0
19:59:01 mmap(0x7fd7684da000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 6, 0)                      = 0x7fd7684da000
19:59:01 close(6) = 0
19:59:01 mprotect(0x7fd7684da000, 4096, PROT_READ) = 0
19:59:01 read(5, "", 4096) = 0
19:59:01 close(5) = 0
19:59:01 munmap(0x7fd770803000, 4096) = 0
19:59:01 read(3, "", 4096)             = 0
19:59:01 close(3) = 0
19:59:01 munmap(0x7fd770804000, 4096)                      = 0
19:59:01 open("/etc/pam.d/other", O_RDONLY)                      = 3
19:59:01 fstat(3, {st_mode=S_IFREG|0644, st_size=154, ...}) = 0
19:59:01 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0)   = 0x7fd770804000
19:59:01 read(3, "#%PAM-1.0\nauth     required     "..., 4096) = 154
19:59:01 read(3, "", 4096) = 0
19:59:01 close(3) = 0
19:59:01 munmap(0x7fd770804000, 4096) = 0
19:59:01 open("/etc/passwd", O_RDONLY|O_CLOEXEC)   = 3
19:59:01 fstat(3, {st_mode=S_IFREG|0644, st_size=1057, ...}) = 0
19:59:01 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fd770804000
19:59:01 read(3, "root:x:0:0:root:/root:/bin/bash\n"..., 4096) = 1057
19:59:01 close(3) = 0
19:59:01 munmap(0x7fd770804000, 4096) = 0
19:59:01 uname({sys="Linux", node="host-11-159-73-176", ...}) = 0
19:59:01 open("/etc/security/access.conf", O_RDONLY) = 3
19:59:01 fstat(3, {st_mode=S_IFREG|0644, st_size=4620, ...}) = 0
19:59:01 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fd770804000
19:59:01 read(3, "# Login access control table.\n#\n"..., 4096) = 4096
19:59:01 read(3, " should get access from ipv4 net"..., 4096) = 524
19:59:01 read(3, "", 4096) = 0
19:59:01 close(3) = 0
19:59:01 munmap(0x7fd770804000, 4096) = 0
19:59:01 getuid() = 0
19:59:01 open("/etc/passwd", O_RDONLY|O_CLOEXEC) = 3
19:59:01 fstat(3, {st_mode=S_IFREG|0644, st_size=1057, ...}) = 0
19:59:01 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0)  = 0x7fd770804000
19:59:01 read(3, "root:x:0:0:root:/root:/bin/bash\n"..., 4096) = 1057
19:59:01 close(3)                       = 0
19:59:01 munmap(0x7fd770804000, 4096) = 0
19:59:01 geteuid() = 0
19:59:01 open("/etc/shadow", O_RDONLY|O_CLOEXEC) = 3
19:59:01 fstat(3, {st_mode=S_IFREG, st_size=901, ...}) = 0
19:59:01 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fd770804000
19:59:01 read(3, "root:$6$4.53VPrJ$1wxMpbsWYp4VKea"..., 4096) = 901
19:59:01 close(3) = 0
19:59:01 munmap(0x7fd770804000, 4096)                      = 0
19:59:01 socket(PF_NETLINK, SOCK_RAW, 9)                       = 3
19:59:01 fcntl(3, F_SETFD, FD_CLOEXEC)   = 0
19:59:01 readlink("/proc/self/exe", "/usr/sbin/crond", 4096) = 15
19:59:01 sendto(3, "p\0\0\0M\4\5\0\1\0\0\0\0\0\0\0op=PAM:accountin"..., 112, 0, {sa_family=AF_NETLINK, pid=0, groups=00000000}, 12)                      = 112
19:59:01 poll([{fd=3, events=POLLIN}], 1, 500)   = 1 ([{fd=3, revents=POLLIN}])
19:59:01 recvfrom(3, "$\0\0\0\2\0\0\1\1\0\0\0\227\7\0\0\0\0\0\0p\0\0\0M\4\5\0\1\0\0\0"..., 8988, MSG_PEEK|MSG_DONTWAIT, {sa_family=AF_NETLINK, pid=0, groups=00000000}, [12]) = 36
19:59:01 recvfrom(3, "$\0\0\0\2\0\0\1\1\0\0\0\227\7\0\0\0\0\0\0p\0\0\0M\4\5\0\1\0\0\0"..., 8988, MSG_DONTWAIT, {sa_family=AF_NETLINK, pid=0, groups=00000000}, [12]) = 36
19:59:01 close(3) = 0
19:59:01 open("/etc/security/pam_env.conf", O_RDONLY) = 3
19:59:01 fstat(3, {st_mode=S_IFREG|0644, st_size=2980, ...}) = 0
19:59:01 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fd770804000
19:59:01 read(3, "#\n# This is the configuration fi"..., 4096) = 2980
19:59:01 read(3, "", 4096) = 0
19:59:01 close(3)                      = 0
19:59:01 munmap(0x7fd770804000, 4096)                       = 0
19:59:01 open("/etc/environment", O_RDONLY)   = 3
19:59:01 fstat(3, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
19:59:01 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0)               = 0x7fd770804000
19:59:01 read(3, "", 4096) = 0
19:59:01 close(3) = 0
19:59:01 munmap(0x7fd770804000, 4096) = 0
19:59:01 socket(PF_NETLINK, SOCK_RAW, 9) = 3
19:59:01 fcntl(3, F_SETFD, FD_CLOEXEC) = 0
19:59:01 sendto(3, "p\0\0\0O\4\5\0\2\0\0\0\0\0\0\0op=PAM:setcred a"..., 112, 0, {sa_family=AF_NETLINK, pid=0, groups=00000000}, 12)                       = 112
19:59:01 poll([{fd=3, events=POLLIN}], 1, 500)   = 1 ([{fd=3, revents=POLLIN}])
19:59:01 recvfrom(3, "$\0\0\0\2\0\0\1\2\0\0\0\227\7\0\0\0\0\0\0p\0\0\0O\4\5\0\2\0\0\0"..., 8988, MSG_PEEK|MSG_DONTWAIT, {sa_family=AF_NETLINK, pid=0, groups=00000000}, [12]) = 36
19:59:01 recvfrom(3, "$\0\0\0\2\0\0\1\2\0\0\0\227\7\0\0\0\0\0\0p\0\0\0O\4\5\0\2\0\0\0"..., 8988, MSG_DONTWAIT, {sa_family=AF_NETLINK, pid=0, groups=00000000}, [12]) = 36
19:59:01 close(3) = 0
19:59:01 open("/etc/passwd", O_RDONLY|O_CLOEXEC) = 3
19:59:01 fstat(3, {st_mode=S_IFREG|0644, st_size=1057, ...}) = 0
19:59:01 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fd770804000
19:59:01 read(3, "root:x:0:0:root:/root:/bin/bash\n"..., 4096) = 1057
19:59:01 close(3) = 0
19:59:01 munmap(0x7fd770804000, 4096) = 0
19:59:01 open("/proc/self/loginuid", O_WRONLY|O_TRUNC|O_NOFOLLOW)        = 3
19:59:01 write(3, "0", 1) = 1
19:59:01 close(3) = 0
19:59:01 open("/etc/passwd", O_RDONLY|O_CLOEXEC) = 3
19:59:01 fstat(3, {st_mode=S_IFREG|0644, st_size=1057, ...}) = 0
19:59:01 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fd770804000
19:59:01 read(3, "root:x:0:0:root:/root:/bin/bash\n"..., 4096) = 1057
19:59:01 close(3) = 0
19:59:01 munmap(0x7fd770804000, 4096) = 0
19:59:01 getuid() = 0
19:59:01 getgid() = 0
19:59:01 keyctl(0, 0xfffffffd, 0, 0, 0) = 496466385
19:59:01 keyctl(0, 0xfffffffb, 0, 0, 0x30) = 785702132
19:59:01 open("/etc/passwd", O_RDONLY|O_CLOEXEC) = 3
19:59:01 fstat(3, {st_mode=S_IFREG|0644, st_size=1057, ...}) = 0
19:59:01 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fd770804000
19:59:01 read(3, "root:x:0:0:root:/root:/bin/bash\n"..., 4096) = 1057
19:59:01 close(3) = 0
19:59:01 munmap(0x7fd770804000, 4096) = 0
19:59:01 getrlimit(RLIMIT_CPU, {rlim_cur=RLIM_INFINITY, rlim_max=RLIM_INFINITY}) = 0
19:59:01 getrlimit(RLIMIT_FSIZE, {rlim_cur=RLIM_INFINITY, rlim_max=RLIM_INFINITY}) = 0
19:59:01 getrlimit(RLIMIT_DATA, {rlim_cur=RLIM_INFINITY, rlim_max=RLIM_INFINITY}) = 0
19:59:01 getrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM_INFINITY}) = 0
19:59:01 getrlimit(RLIMIT_CORE, {rlim_cur=RLIM_INFINITY, rlim_max=RLIM_INFINITY}) = 0
19:59:01 getrlimit(RLIMIT_RSS, {rlim_cur=RLIM_INFINITY, rlim_max=RLIM_INFINITY}) = 0
19:59:01 getrlimit(RLIMIT_NPROC, {rlim_cur=RLIM_INFINITY, rlim_max=RLIM_INFINITY}) = 0
19:59:01 getrlimit(RLIMIT_NOFILE, {rlim_cur=1073741816, rlim_max=1073741816}) = 0
19:59:01 getrlimit(RLIMIT_MEMLOCK, {rlim_cur=64*1024, rlim_max=64*1024}) = 0
19:59:01 getrlimit(RLIMIT_AS, {rlim_cur=RLIM_INFINITY, rlim_max=RLIM_INFINITY}) = 0
19:59:01 getrlimit(RLIMIT_LOCKS, {rlim_cur=RLIM_INFINITY, rlim_max=RLIM_INFINITY}) = 0
19:59:01 getrlimit(RLIMIT_SIGPENDING, {rlim_cur=883632, rlim_max=883632}) = 0
19:59:01 getrlimit(RLIMIT_MSGQUEUE, {rlim_cur=800*1024, rlim_max=800*1024}) = 0
19:59:01 getrlimit(RLIMIT_NICE, {rlim_cur=0, rlim_max=0}) = 0
19:59:01 getrlimit(RLIMIT_RTPRIO, {rlim_cur=0, rlim_max=0}) = 0
19:59:01 getpriority(PRIO_PROCESS, 0) = 20
19:59:01 open("/etc/security/limits.conf", O_RDONLY) = 3
19:59:01 fstat(3, {st_mode=S_IFREG|0644, st_size=1835, ...}) = 0
19:59:01 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fd770804000
19:59:01 read(3, "# /etc/security/limits.conf\n#\n#E"..., 4096) = 1835
19:59:01 read(3, "", 4096) = 0
19:59:01 close(3) = 0
19:59:01 munmap(0x7fd770804000, 4096) = 0
19:59:01 open("/etc/security/limits.d", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 3
19:59:01 getdents(3, /* 3 entries */, 32768) = 88
19:59:01 open("/usr/lib64/gconv/gconv-modules.cache", O_RDONLY)                       = 5
19:59:01 fstat(5, {st_mode=S_IFREG|0644, st_size=26060, ...}) = 0
19:59:01 mmap(NULL, 26060, PROT_READ, MAP_SHARED, 5, 0) = 0x7fd7707f5000
19:59:01 close(5)  = 0
19:59:01 getdents(3, /* 0 entries */, 32768) = 0
19:59:01 close(3) = 0
19:59:01 open("/etc/security/limits.d/90-nproc.conf", O_RDONLY) = 3
19:59:01 fstat(3, {st_mode=S_IFREG|0644, st_size=193, ...}) = 0
19:59:01 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fd770804000
19:59:01 read(3, "# Default limit for number of us"..., 4096) = 193
19:59:01 read(3, "", 4096)              = 0
19:59:01 close(3)                       = 0
19:59:01 munmap(0x7fd770804000, 4096)   = 0
19:59:01 setrlimit(RLIMIT_NPROC, {rlim_cur=RLIM_INFINITY, rlim_max=RLIM_INFINITY}) = 0
19:59:01 setpriority(PRIO_PROCESS, 0, 0) = 0
19:59:01 getuid() = 0
19:59:01 open("/etc/passwd", O_RDONLY|O_CLOEXEC) = 3
19:59:01 fstat(3, {st_mode=S_IFREG|0644, st_size=1057, ...}) = 0
19:59:01 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fd770804000
19:59:01 read(3, "root:x:0:0:root:/root:/bin/bash\n"..., 4096) = 1057
19:59:01 close(3) = 0
19:59:01 munmap(0x7fd770804000, 4096)                     = 0
19:59:01 socket(PF_NETLINK, SOCK_RAW, 9)                      = 3
19:59:01 fcntl(3, F_SETFD, FD_CLOEXEC)                      = 0
19:59:01 sendto(3, "t\0\0\0Q\4\5\0\3\0\0\0\0\0\0\0op=PAM:session_o"..., 116, 0, {sa_family=AF_NETLINK, pid=0, groups=00000000}, 12) = 116
19:59:01 poll([{fd=3, events=POLLIN}], 1, 500) = 1 ([{fd=3, revents=POLLIN}])
19:59:01 recvfrom(3, "$\0\0\0\2\0\0\1\3\0\0\0\227\7\0\0\0\0\0\0t\0\0\0Q\4\5\0\3\0\0\0"..., 8988, MSG_PEEK|MSG_DONTWAIT, {sa_family=AF_NETLINK, pid=0, groups=00000000}, [12]) = 36
19:59:01 recvfrom(3, "$\0\0\0\2\0\0\1\3\0\0\0\227\7\0\0\0\0\0\0t\0\0\0Q\4\5\0\3\0\0\0"..., 8988, MSG_DONTWAIT, {sa_family=AF_NETLINK, pid=0, groups=00000000}, [12]) = 36
19:59:01 close(3) = 0
19:59:01 setgid(0) = 0
19:59:01 open("/proc/sys/kernel/ngroups_max", O_RDONLY) = 3
19:59:01 read(3, "65536\n", 31)         = 6
19:59:01 close(3)                       = 0
19:59:01 socket(PF_FILE, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 3
19:59:01 connect(3, {sa_family=AF_FILE, path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory)
19:59:01 close(3) = 0
19:59:01 socket(PF_FILE, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 3
19:59:01 connect(3, {sa_family=AF_FILE, path="/var/run/nscd/socket"}, 110)                       = -1 ENOENT (No such file or directory)
19:59:01 close(3) = 0
19:59:01 open("/etc/group", O_RDONLY|O_CLOEXEC) = 3
19:59:01 fstat(3, {st_mode=S_IFREG|0644, st_size=497, ...}) = 0
19:59:01 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fd770804000
19:59:01 lseek(3, 0, SEEK_CUR) = 0
19:59:01 read(3, "root:x:0:\nbin:x:1:bin,daemon\ndae"..., 4096) = 497
19:59:01 read(3, "", 4096)              = 0
19:59:01 close(3)                       = 0
19:59:01 munmap(0x7fd770804000, 4096)                     = 0
19:59:01 setgroups(1, [0]) = 0
19:59:01 setreuid(0, 4294967295) = 0
19:59:01 rt_sigaction(SIGCHLD, {SIG_DFL, [CHLD], SA_RESTORER|SA_RESTART, 0x7fd76fa316a0}, {0x558826e03b80, [], SA_RESTORER|SA_RESTART, 0x7fd76fa316a0}, 8) = 0
19:59:01 pipe([3, 5])                   = 0
19:59:01 pipe([6, 7])                   = 0
19:59:01 clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7fd7707fca70) = 1946
19:59:01 gettid()                     = 1943
19:59:01 open("/proc/self/task/1943/attr/exec", O_RDWR) = 8
19:59:01 write(8, NULL, 0) = -1 EINVAL (Invalid argument)
19:59:01 close(8) = 0
19:59:01 close(3) = 0
19:59:01 close(7) = 0
19:59:01 close(5) = 0
19:59:01 fcntl(6, F_GETFL)                       = 0 (flags O_RDONLY)
19:59:01 fstat(6, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
19:59:01 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0)                     = 0x7fd770804000
19:59:01 lseek(6, 0, SEEK_CUR)                     = -1 ESPIPE (Illegal seek)
19:59:01 read(6, "/bin/bash: ./logrotate.sh: \346\262\241\346\234"..., 4096) = 55
19:59:01 uname({sys="Linux", node="host-11-159-73-176", ...}) = 0
19:59:01 getrlimit(RLIMIT_NOFILE, {rlim_cur=1073741816, rlim_max=1073741816}) = 0
19:59:01 mmap(NULL, 4294967296, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fd6682da000
19:59:01 --- SIGCHLD (Child exited) @ 0 (0) ---
19:59:06 +++ killed by SIGKILL +++

可以看到最后用 mmap 一次分配了 4G 內存,然后就被kill了。

mmap前調用了getrlimit,和上次 MySQL的問題一樣,都是根據系統資源限制來分配內存

為了確定就是cron導致java掛掉的元兇,我們把cron進程手動kill掉,這樣就不會執行定時任務了,這次我們在驗證下Java進程是否會掛掉

果不其然,Java進程并沒有掛掉,看來真的是cron任務導致的

高版本CentOS是否也會出現類似問題?

按理說oom killer應該只kill掉占用內存最高的才對,Java進程占用內存又不是最高的,高版本的CentOS系統oom killer策略會不會有升級?

讓我們來一起驗證下高版本的CentOS系統是否有這個問題

當前鏡像的CentOS版本是CentOS release 6.6 (Final),為了驗證高版本的CentOS是否也有類似的問題,我們將增加兩個實驗組,分別升級基礎鏡像至CentOS release 6.10 (Final)和CentOS Linux release 7.9.2009 (Core),也添加相同的cron任務

結果發現CentOS release 6.10 (Final)和CentOS Linux release 7.9.2009 (Core)都沒有kill掉Java進程,只kill掉了cron的子進程


結論

由于容器limit open files(系統最大句柄數)設置不合理導致cron執行任務時使容器內存飆升,存在內存溢出的風險,linux由于保護機制會kill掉占用內存高的進程,導致cron子任務進程和Java進程一起被kill(但是問題來了,這個jdos基礎鏡像為什么會執行一個完全不存在的shell腳本,而且還是執行兩次???),高版本的CentOS系統不會kill java進程,猜測不同版本的CentOS的kill選擇策略略有不同

問題分析

Cron任務執行邏輯

在Linux中,crontab工具是由croine軟件包提供的,讓我們一起看下cron的執行過程

其中child_process()執行了cron子進程,cron執行子進程時會有發送mail的動作

cron_popen在執行時會按照open files(系統最大句柄數)清除內存

綜上,cron oom的原因找到了,是由于open files設置過大且cron任務沒有標準輸出,導致執行了發送mail邏輯,而清除的內存大小超出了容器本身內存的大小,導致oom。

croine 1.5.4 版本之后修復了該問題,如果想查看當前容器croine版本可執行如下命令:

1.rpm -q cronie

Linux內核OOM killer機制

Linux 內核有個機制叫OOM killer(Out Of Memory killer),該機制會監控那些占用內存過大,尤其是瞬間占用內存很快的進程,然后防止內存耗盡而自動把該進程殺掉。內核檢測到系統內存不足、挑選并殺掉某個進程的過程可以參考內核源代碼linux/mm/oom_kill.c,當系統內存不足的時候,out_of_memory()被觸發,然后調用select_bad_process()選擇一個”bad”進程殺掉。

以下是一些主要的進程選擇策略:

  1. 內存使用情況:OOM Killer首先傾向于選擇占用內存最多的進程,因為終止這些進程可以釋放最多的內存。
  2. OOM分數:每個進程都有一個OOM分數,該分數是基于其內存使用情況和其他因素計算出來的。OOM Killer傾向于終止OOM分數最高的進程。
  3. 進程優先級:在選擇要終止的進程時,OOM Killer通常會避免終止對系統至關重要的系統進程。這些進程通常具有較高的優先級,因此它們更不容易成為終止目標。
  4. 進程資源需求:OOM Killer還會考慮進程的資源需求。它傾向于終止那些請求較少資源的進程,以最小化影響其他進程的運行。
  5. 進程屬性:某些進程可能被標記為不可終止,例如通過設置/proc/\[PID\]/oom\_score\_adj的值來調整OOM分數。這些進程通常不容易被OOM Killer終止。

注:不同版本的Linux oom killer機制可能會存在一些差異

解決方案

使用高版本穩定的CentOS系統,如果業務無法升級CentOS,則需要設置合理的limit open files數量,application\_worker類型應用可以在啟動腳本中手動修改limit,web\_tomcat類型應用沒法修改啟動腳本,可以選擇kill掉cron進程或刪除系統cron任務,也可以手動升級cronie的版本至1.5.7-5

寫在后面

open files這個坑很大,栽這個坑兩次了,大家一定要檢查自己服務對應容器的CentOS版本和limit設置是否合理,本次案例發生在測試環境,尚不會引起事故,如果在生產出現類似情況,后果不堪設想

由于測試環境新增的這批機器都存在這個問題,我們團隊已經聯系機器提供方上報了該問題,后續這批機器會由提供方統一修改系統最大句柄數,如果當前問題影響到了業務的正常使用,可以臨時刪除容器中/etc/crontab中的任務

參考文獻

https://cloud.tencent.com/developer/article/1183262

https://github.com/cronie-crond/cronie

責任編輯:龐桂玉 來源: 51CTO博客
相關推薦

2019-12-24 11:00:51

NVMeSSDSATA

2023-04-06 09:44:00

ChatGPT行業質量

2020-06-17 10:52:30

運維故障技術

2020-12-29 05:39:44

日志服務環境

2020-09-29 06:45:49

JDK

2015-06-18 11:04:58

2020-12-15 08:05:40

路由器服務器網絡層

2021-07-28 06:51:08

Nacos代理模式

2024-08-05 01:28:26

2024-09-27 11:38:49

2023-06-05 00:21:33

0.001服務可用漏洞

2019-12-16 09:53:34

Nginx程序員開源

2021-10-18 13:42:52

加密貨幣金融工具

2018-07-06 00:09:47

2023-03-13 08:09:03

Protobuffeature分割

2020-10-20 17:18:00

戴爾

2021-08-28 10:15:26

項目結構Flask

2022-07-07 19:44:22

Python 3.1

2020-08-19 09:23:10

傳輸網絡WDM網絡技術
點贊
收藏

51CTO技術棧公眾號

www.欧美国产| 中文字幕无码日韩专区免费| 日韩伦理福利| 久久久久久一级片| 国产美女久久精品香蕉69| 伊人在我在线看导航| 欧美一区二区麻豆红桃视频| 欧美日韩国产美| 神马欧美一区二区| 一级片免费网站| 午夜精品久久99蜜桃的功能介绍| 日韩精品中文字幕在线一区| 日韩av综合在线观看| 久久精品国产亚洲a∨麻豆| 日韩av一区二区三区四区| 久久久国产91| 国产chinese中国hdxxxx| 都市激情综合| 亚洲黄网站在线观看| 九色综合婷婷综合| 一级片免费观看视频| 9国产精品视频| 日韩视频中文字幕| 黄色免费看视频| 国产精品99久久久久久董美香| 久久精品亚洲国产奇米99| 成人在线精品视频| 中文字幕高清在线免费播放| 天天影视欧美综合在线观看| 亚洲国产免费av| 中文字幕日韩综合| jizz一区二区三区| 中文字幕一区在线观看视频| 久久99久久99精品蜜柚传媒| av小说天堂网| 青青草91视频| 91精品国产高清| 777777国产7777777| 久草在线成人| 亚洲电影av在线| 天美一区二区三区| 国产欧美自拍| 色综合久久综合网| www.射射射| 超碰在线观看免费版| 国产欧美一区二区三区沐欲| 国内精品一区二区| 中文字字幕在线观看| 亚洲深夜av| 国内精品一区二区三区| 欧美黑吊大战白妞| 婷婷中文字幕一区| 日韩久久精品电影| 亚洲av成人精品一区二区三区 | 亚洲精品一区在线| 欧美日韩激情在线| 91激情视频在线| 色在线免费观看| 精品免费在线视频| 毛片在线视频播放| brazzers在线观看| 亚洲综合一区二区精品导航| 亚洲av综合色区| 黄色网在线免费看| 亚洲欧美日韩小说| 日本一区二区免费高清视频| av在线播放av| 国产精品女同一区二区三区| 日本在线视频不卡| 大片免费播放在线视频| 国产欧美一区二区精品久导航| 久久本道综合色狠狠五月| 老司机午夜福利视频| 成人午夜伦理影院| 国产成人精品免费视频大全最热| 99久久精品日本一区二区免费 | 亚洲自拍都市欧美小说| 日韩精品极品毛片系列视频| 香蕉久久久久久av成人| 成人直播在线观看| 福利视频网站一区二区三区| 成人精品一区二区三区| 狠狠狠狠狠狠狠| 日日夜夜免费精品| 国产精品免费久久久| 中文字幕在线观看欧美| 激情图片小说一区| 国产 高清 精品 在线 a| 高清乱码毛片入口| 国产福利视频一区二区三区| 99久久精品免费看国产四区| 成人免费视频国产| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 亚洲蜜桃精久久久久久久久久久久| 欧美黄色录像| 国产偷亚洲偷欧美偷精品| 自拍偷拍视频亚洲| 国产精品久久观看| 高清一区二区三区四区五区| 国产亚洲欧美在线精品| 美女视频一区二区三区| 3d动漫啪啪精品一区二区免费| 亚洲国产综合一区| 久久色中文字幕| 亚洲精品第一区二区三区| 成年人黄视频在线观看| 五月天亚洲精品| 男女无套免费视频网站动漫| 国产视频一区二| 亚洲激情在线观看| 国产女主播喷水高潮网红在线| 日韩在线观看一区 | 成人影视免费观看| 久久精品高清| 午夜免费日韩视频| 真实新婚偷拍xxxxx| 成人少妇影院yyyy| 亚洲日本精品国产第一区| 欧美性受ⅹ╳╳╳黑人a性爽| 亚洲国产美女搞黄色| 天天爱天天操天天干| 色综合久久久| 亚洲欧美日韩精品久久| 麻豆疯狂做受xxxx高潮视频| 日韩电影在线观看一区| 国产一区二区三区高清视频| 色多多视频在线观看| 亚洲一区二区三区四区的| 青青青国产在线视频| 久久中文字幕一区二区| 亚洲天堂第一页| 成人自拍小视频| 日韩电影在线一区二区| 91精品国产综合久久男男| 天天综合天天色| 国产精品福利影院| 日本www高清视频| 欧美影院视频| 国产亚洲福利一区| 亚欧视频在线观看| 国产精品一区二区视频| 伊人久久大香线蕉av一区| 一本大道色婷婷在线| 精品国产欧美一区二区| 亚洲xxxx3d动漫| 美女视频网站久久| 色之综合天天综合色天天棕色| 久草在线中文最新视频| 欧美r级电影在线观看| 91狠狠综合久久久| 日韩和的一区二区| 免费av一区二区三区| japanese色国产在线看视频| 日韩欧美一区二区视频| 欧美国产日韩在线观看成人| 久久成人羞羞网站| 亚洲一二三区精品| 国产精品原创视频| 日韩在线国产精品| 一级久久久久久久| 亚洲欧洲国产日本综合| 岛国av在线免费| 免费黄色成人| 91av在线免费观看| 日批视频免费播放| 一本久久a久久免费精品不卡| 亚洲综合色一区| 麻豆精品国产91久久久久久| 97超碰人人爱| 精品亚洲免a| 国产成人拍精品视频午夜网站| 成人在线免费观看| 日韩午夜电影在线观看| 日韩特黄一级片| 欧美国产欧美综合| 手机在线免费毛片| 亚洲区第一页| 手机看片福利永久国产日韩| 欧美.com| 欧洲成人性视频| 伊人在线视频| 亚洲成人黄色在线| 国产在线观看第一页| 国产一区二区精品久久91| 日韩专区第三页| 免费看成人吃奶视频在线| 91精品久久久久久久久久久| 女人黄色免费在线观看| 亚洲天堂免费视频| 性一交一乱一乱一视频| 色哟哟一区二区在线观看| 永久av免费网站| 91在线视频播放地址| 自拍偷拍21p| 亚洲人成免费| 这里只有精品66| 亚洲精品亚洲人成在线观看| 成人精品一区二区三区电影免费 | 亚洲一区二区三区四区在线观看| 37p粉嫩大胆色噜噜噜| 极品美女销魂一区二区三区| 日韩精品―中文字幕| 91精品国偷自产在线电影| 久久精品丝袜高跟鞋| 韩国三级成人在线| 日韩av电影院| av电影院在线看| 久久精品国产2020观看福利| 日本大片在线观看| www.久久网| 狠狠躁天天躁日日躁欧美| 久草综合在线视频| 中文字幕第一页久久| 黄色a一级视频| 丁香亚洲综合激情啪啪综合| 中文字幕亚洲影院| 日韩不卡一区二区三区| 亚洲中文字幕无码专区| 午夜精品婷婷| 免费久久久久久| 成人免费看片39| 欧日韩一区二区三区| 日韩福利视频一区| 粉嫩av四季av绯色av第一区| 91精品亚洲一区在线观看| 国产精品aaaa| 97成人资源| 91成品人片a无限观看| 免费影视亚洲| 九九热精品视频国产| 免费在线观看黄色| 色偷偷888欧美精品久久久| 国产一区电影| 亚洲视频专区在线| 麻豆导航在线观看| 亚洲剧情一区二区| 青青免费在线视频| 日韩精品小视频| 视频污在线观看| 亚洲国产精品女人久久久 | 亚洲性夜色噜噜噜7777| 日本视频在线观看一区二区三区 | 久cao在线| 深夜福利日韩在线看| 91福利在线视频| 中文字幕在线日韩| 香港伦理在线| 色噜噜国产精品视频一区二区| h视频网站在线观看| 一区二区三区黄色| av中文字幕在线| 色妞久久福利网| 国产色在线观看| 欧美夫妻性生活视频| 2001个疯子在线观看| 777777777亚洲妇女| 性国裸体高清亚洲| 国产高清视频一区三区| 男人亚洲天堂| 亚洲va欧美va国产综合剧情| 亚洲超碰在线观看| 韩国成人一区| 国产精品日韩精品中文字幕| 日韩欧美视频一区二区| 999国产精品视频| 最新av网址在线观看| 亚洲国产精品第一区二区| 欧美国产激情视频| 秋霞午夜鲁丝一区二区老狼| 日本高清免费在线视频| 成人av在线播放网站| 欧美做受高潮6| 亚洲三级在线免费| 好吊操这里只有精品| 色美美综合视频| 国产精品欧美久久久久天天影视 | 成人资源www网在线最新版| 久久精品色欧美aⅴ一区二区| 手机av免费在线| 日韩美女在线观看| 亚洲青青一区| 国产综合18久久久久久| 日韩在线中文| 少妇高潮毛片色欲ava片| 日韩av一区二区在线影视| 人妻精油按摩bd高清中文字幕| 91麻豆国产在线观看| 2014亚洲天堂| 污片在线观看一区二区| 亚洲一级特黄毛片| 亚洲国产精品中文| 老司机在线看片网av| 91精品国产高清久久久久久91 | 欧美精选午夜久久久乱码6080| 亚洲经典一区二区三区| 一区二区欧美在线| 福利网站在线观看| 国产精选久久久久久| 欧美一级色片| 欧美 国产 精品| 久久久久久网| 女性生殖扒开酷刑vk| 欧美国产精品中文字幕| www.av麻豆| 欧美一区二区精品| 国产精品一区二区三区四区色| 欧美夫妻性生活视频| 色999久久久精品人人澡69| 欧美激情第一页在线观看| 在线精品国产| 在线看的黄色网址| 91蝌蚪porny| www.天天色| 日韩一级片在线观看| 自拍视频在线免费观看| 91av在线免费观看| 成人爽a毛片| 老汉色影院首页| 麻豆91在线观看| 国产美女免费无遮挡| 午夜视频一区二区| www.日韩在线观看| 久久精品视频在线观看| 99久久婷婷国产综合精品首页| 九九九九九精品| 极品尤物久久久av免费看| 777一区二区| 国产精品女主播在线观看| 日韩精品一区二区亚洲av观看| 亚洲第一男人天堂| 超免费在线视频| 成人动漫在线观看视频| 亚洲欧美色图| 免费不卡av网站| 亚洲色图欧美偷拍| 国产精品视频第一页| 久久精品国产综合| av一级久久| 影音先锋成人资源网站| 国产麻豆精品视频| 青娱乐国产在线视频| 欧美一卡二卡在线观看| 在线看三级电影| 99视频在线播放| 亚洲午夜黄色| www.日本高清| 色综合天天综合网天天狠天天| 天堂a√中文在线| 欧洲中文字幕国产精品| 夜夜春成人影院| 日本成人中文字幕在线| 国产精品久久网站| 一级黄色大片网站| 久久精品国产2020观看福利| 深夜激情久久| 日韩av在线播放不卡| www成人在线观看| www.av88| 久久天堂电影网| 亚洲国产欧美国产第一区| 国产欧美久久久久| 99精品国产一区二区三区不卡| 麻豆久久久久久久久久| 一本一本久久a久久精品牛牛影视| 精品亚洲美女网站| 成人手机视频在线| 国产精品综合在线视频| 日韩精品视频免费看| 国产一区二区三区在线播放免费观看| 日韩高清在线| 成年人三级视频| 不卡的av电影| 成人一二三四区| 欧美xxxx18性欧美| 乱亲女h秽乱长久久久| 久草精品在线播放| 最新不卡av在线| 香蕉av一区二区三区| 国产精品久久久久久五月尺| 你懂的网址国产 欧美| 欧美在线一级片| 欧美日韩在线观看一区二区 | 一区在线播放| 老牛影视av老牛影视av| 欧美精品第一页| 日本在线啊啊| 美国av在线播放| 91免费观看在线| 国产乱淫片视频| 欧美在线视频网| 欧美激情第二页| 亚洲第一综合网| 精品久久久久香蕉网| 99riav视频一区二区| 被灌满精子的波多野结衣| 中文字幕av一区 二区| 黑人精品一区二区三区| 国产欧美日韩免费看aⅴ视频| 尤物精品在线| 国产午夜精品理论片|