Ubuntu 서버 14.04 postgres 오염됨

Ubuntu 서버 14.04 postgres 오염됨

Postgresql 9.3이 설치된 Ubuntu 14.04 서버를 실행하고 있습니다. 서버에 여유 공간이 부족해질 때까지 커널 메시지가 kern.log 및 syslog에 1분에 수백 줄씩 넘쳐나는 것을 봅니다. 나는 이 문제의 원인을 모르고 있습니다.

예전에는 최신 커널로 업데이트하고 재부팅해서 일시적으로 해결했는데, 금방 문제가 다시 발생합니다. 도움을 주시면 감사하겠습니다.

다음은 로그 항목 중 하나입니다.

Sep 28 15:47:32 database kernel: [430051.554606] ------------[ cut here ]------------

Sep 28 15:47:32 database kernel: [430051.554620] WARNING: CPU: 31 PID: 29156 at /build/linux-hFNI9K/linux-3.13.0/net/core/dst.c:285 dst_release+0x45/0x60()

Sep 28 15:47:32 database kernel: [430051.554621] Modules linked in: ppdev vmw_balloon coretemp crct10dif_pclmul crc32_pclmul ghash_clmulni_intel aesni_intel aes_x86_64 lr
w gf128mul glue_helper ablk_helper cryptd serio_raw vmwgfx ttm drm vmw_vmci i2c_piix4 parport_pc lp shpchp mac_hid parport psmouse mptspi mptscsih vmxnet3 mptbase pata_ac
pi floppy

Sep 28 15:47:32 database kernel: [430051.554640] CPU: 31 PID: 29156 Comm: postgres Tainted: G        W     3.13.0-63-generic #103-Ubuntu
Sep 28 15:47:32 database kernel: [430051.554642] Hardware name: VMware, Inc. VMware Virtual Platform/440BX Desktop Reference Platform, BIOS 6.00 09/30/2014

Sep 28 15:47:32 database kernel: [430051.554643]  0000000000000009 ffff88081207bb18 ffffffff81723cc0 0000000000000000
Sep 28 15:47:32 database kernel: [430051.554648]  ffff88081207bb50 ffffffff8106785d ffff88080e485500 00000000fffffffe

Sep 28 15:47:32 database kernel: [430051.554651]  ffff880810c58cc0 0000000000000000 0000000000000000 ffff88081207bb60

Sep 28 15:47:32 database kernel: [430051.554654] Call Trace:

Sep 28 15:47:32 database kernel: [430051.554661]  [<ffffffff81723cc0>] dump_stack+0x45/0x56

Sep 28 15:47:32 database kernel: [430051.554665]  [<ffffffff8106785d>] warn_slowpath_common+0x7d/0xa0

Sep 28 15:47:32 database kernel: [430051.554667]  [<ffffffff8106793a>] warn_slowpath_null+0x1a/0x20

Sep 28 15:47:32 database kernel: [430051.554669]  [<ffffffff81630045>] dst_release+0x45/0x60

Sep 28 15:47:32 database kernel: [430051.554673]  [<ffffffff81610cf1>] sk_dst_check+0xb1/0xe0

Sep 28 15:47:32 database kernel: [430051.554678]  [<ffffffff816c3d1f>] ip6_sk_dst_lookup_flow+0x2f/0x1b0

Sep 28 15:47:32 database kernel: [430051.554682]  [<ffffffff816ded3e>] udpv6_sendmsg+0x61e/0xb10

Sep 28 15:47:32 database kernel: [430051.554688]  [<ffffffff81246eea>] ? ext4_da_write_end+0xba/0x250

Sep 28 15:47:32 database kernel: [430051.554694]  [<ffffffff8114f917>] ? generic_file_buffered_write+0x187/0x250

Sep 28 15:47:32 database kernel: [430051.554699]  [<ffffffff81696064>] inet_sendmsg+0x64/0xb0

Sep 28 15:47:32 database kernel: [430051.554704]  [<ffffffff81314c07>] ? apparmor_socket_sendmsg+0x17/0x20

Sep 28 15:47:32 database kernel: [430051.554707]  [<ffffffff8160e84b>] sock_sendmsg+0x8b/0xc0

Sep 28 15:47:32 database kernel: [430051.554710]  [<ffffffff8123c322>] ? ext4_file_write+0xa2/0x3f0

Sep 28 15:47:32 database kernel: [430051.554714]  [<ffffffff813398c8>] ? generic_make_request+0x18/0x110

Sep 28 15:47:32 database kernel: [430051.554719]  [<ffffffff8172fe74>] ? __do_page_fault+0x204/0x570

Sep 28 15:47:32 database kernel: [430051.554721]  [<ffffffff8160ed91>] SYSC_sendto+0x121/0x1c0

Sep 28 15:47:32 database kernel: [430051.554727]  [<ffffffff811c0991>] ? __sb_end_write+0x31/0x60

Sep 28 15:47:32 database kernel: [430051.554730]  [<ffffffff811be502>] ? vfs_write+0x192/0x1f0

Sep 28 15:47:32 database kernel: [430051.554732]  [<ffffffff8160f77e>] SyS_sendto+0xe/0x10

Sep 28 15:47:32 database kernel: [430051.554735]  [<ffffffff8173489d>] system_call_fastpath+0x1a/0x1f

Sep 28 15:47:32 database kernel: [430051.554736] ---[ end trace 38c082ce448557d2 ]---

Sep 28 15:47:32 database kernel: [430051.554737] ------------[ cut here ]------------

이는 물리적 머신에서 데이터베이스를 실행할 때 발생했고, 지금은 ESX 5.1의 VM에 있을 때 발생합니다.

VM에 대한 몇 가지 세부정보는 다음과 같습니다.

Ubuntu 14.04.3, x86_64
Kernel: 3.13.0-63-generic
Intel(R) Xeon(R) CPU E5-2630 v3 @ 2.40GHz, 32 cores

답변1

Ubuntu 16.04 및 Postgresql 9.6에서 매우 비슷한 문제가 있었습니다.

ipv6을 비활성화하면 문제가 해결되었습니다.

echo "net.ipv6.conf.all.disable_ipv6 = 1" >> /etc/sysctl.conf
sudo sysctl -p

/etc/hosts의 ipv6 줄을 주석 처리합니다.

# The following lines are desirable for IPv6 capable hosts
#::1    localhost       ip6-localhost ip6-loopback
#ff02::1        ip6-allnodes
#ff02::2        ip6-allrouters

Postgres가 듣게 만들기오직ipv4에서 localhost를 127.0.0.1로 바꾸십시오.

이제 포스트그레스를 다시 시작하세요

sudo /etc/init.d/postgresql restart

관련 정보