S.O.S. PgSQL lassú kapcsolódás

Fórumok

Tisztelt Fórumozók!

Egy anomáliával fordulnék hozzátok. Remélem még van, aki fent van és tudtok nekem ötleteket adni.A jelenség a következő:
- Adott egy szerver, amin van egy webszerver(Apache) és egy adatbázis szerver(Postgres). Ezen a szerveren minden olyan oldal, ami használ adatbázist, szinte elérhetetlenül lassú.
- Nézem iftop, iotop, htop semmi extra terhelés. Sőt szinte semmi terhelés.
- Nézem netstat-ot, szinte nulla kapcsolat
- Adatbázis mentes, statikus honlapok azonnal betöltődik
- localhost/server-status szintén nem töltödik be.
- Lekérdeztem postgres specifikus select-ekkel a kapcsolatok számát, de semmi.
- su - postgres; - ha psql, akkor pillanatok alatt kapcsolódik, ha írok oda adatbázis nevet, akkor kb 3 perc múlva ad promtot

Már nincs ötletem, hogy mi lehet a gond. Nem volt szerver frissítés, semmi... Egyik pillanatról a másikra elkezdte ezt csinálni és nem értem, hogy miért.

Van valakinek valami ötlete, hogy még mit nézhetnék meg, ami választ adna arra az egyszerűnek tűnő kérdésre, hogy MIÉRT CSINÁLJA EZT?

Hozzászólások

Ha már kapcsolódott az adatbázishoz, akkor utána a lekérdezések nem tűnnek lassúnak.

Itt akad meg, ez neked mond valamit?

munmap(0x7f25d98f6000, 4096) = 0
socket(PF_NETLINK, SOCK_RAW, 0) = 3
bind(3, {sa_family=AF_NETLINK, pid=0, groups=00000000}, 12) = 0
getsockname(3, {sa_family=AF_NETLINK, pid=7115, groups=00000000}, [12]) = 0
sendto(3, "\24\0\0\0\26\0\1\3\177j\204P\0\0\0\0\0\0\0\0", 20, 0, {sa_family=AF_NETLINK, pid=0, groups=00000000}, 12) = 20
recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"0\0\0\0\24\0\2\0\177j\204P\313\33\0\0\2\10\200\376\1\0\0\0\10\0\1\0\177\0\0\1"..., 4096}], msg_controllen=0, msg_flags=0}, 0) = 168
recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"@\0\0\0\24\0\2\0\177j\204P\313\33\0\0\n\200\200\376\1\0\0\0\24\0\1\0\0\0\0\0"..., 4096}], msg_controllen=0, msg_flags=0}, 0) = 128
recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"\24\0\0\0\3\0\2\0\177j\204P\313\33\0\0\0\0\0\0", 4096}], msg_controllen=0, msg_flags=0}, 0) = 20
close(3) = 0
socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 3
connect(3, {sa_family=AF_INET, sin_port=htons(5432), sin_addr=inet_addr("127.0.0.1")}, 16) = 0
getsockname(3, {sa_family=AF_INET, sin_port=htons(48182), sin_addr=inet_addr("127.0.0.1")}, [16]) = 0
close(3) = 0
socket(PF_INET6, SOCK_DGRAM, IPPROTO_IP) = 3
connect(3, {sa_family=AF_INET6, sin6_port=htons(5432), inet_pton(AF_INET6, "::1", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, 28) = 0
getsockname(3, {sa_family=AF_INET6, sin6_port=htons(60481), inet_pton(AF_INET6, "::1", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, [28]) = 0
close(3) = 0
socket(PF_INET6, SOCK_STREAM, IPPROTO_IP) = 3
setsockopt(3, SOL_TCP, TCP_NODELAY, [1], 4) = 0
fcntl(3, F_SETFL, O_RDONLY|O_NONBLOCK) = 0
fcntl(3, F_SETFD, FD_CLOEXEC) = 0
setsockopt(3, SOL_SOCKET, SO_KEEPALIVE, [1], 4) = 0
connect(3, {sa_family=AF_INET6, sin6_port=htons(5432), inet_pton(AF_INET6, "::1", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, 28) = -1 EINPROGRESS (Operation now in progress)
poll([{fd=3, events=POLLOUT|POLLERR}], 1, -1

Fórumon olvasgattam és azt írták, amit kb eddig is tudtam:

# "local" is for Unix domain socket connections only
#local all all trust
local all all md5
# IPv4 local connections:
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 trust

- Ha csak simán a psql-el kapcsolódunk, akkor a local ágra futunk rá

- de ha már beírjuk, hogy -h localhost, akkor távoli kapcsolatként értelmezi a rendszer, így a host ágak jönnek

Ahhoz, hogy a kielőrtessük, hogy IPv4-en kapcsolódjon, IPv4 címet kell neki megadni, tehát 127.0.0.1. Így tehát most nekem is kapcsolódik azonnal.

Ez mind rendben is van. Értem én ezt. De eddig akkor miért volt jó a localhost és most nem jó?

Hiába keresgélek a neten... Nincs válasz erre a kérdésre. :( De azért még holnap keresgélek, mert nagyon érdekel, hogy mi változott meg.

Minden esetre nagyon szépen köszönöm! Az strace most életet mentett.

Köszi G, hogy Rád még ilyenkor is lehet számítani :$
További szép estét és köszi még egyszer.

Az strace egy nagyon jó ötlet volt... Végre sikerült rájönnöm, hogy miket is irkál.

Így tesztelgettem, hogy mikor mit csinál és mit ír ki.
Rájöttem, hogy addig nincs gond, amíg így adom ki a psql: psql < dbname >

De ha beleírom, hogy -h localhost, akkor leakad és vár fél percet.
Gondoltam, akkor kipróbálom mi van ha a localhost helyett 127.0.0.1-et írok. Pillanatok alatt kapcsolódott.

Mi lehet a gond? Mi változhatott meg, ami miatt ilyet produkálhat?

http://hup.hu/node/118750#comment-1520059

Most csak az a komment alapján feltételezem, hogy először IPv6-tal próbál csatlakozni, ott kivárja a timeout-ot majd csatlakozik pillanatok alatt IPv4-el. Ha "::1"-ra próbálsz csatlakozni, akkor mi van?

----------------
Lvl86 Troll, "hobbifejlesztő" - Think Wishfully™

Ezert most sokan meg fognak engem kopdosni, de en azt mondom, ha nincs szukseged ipv6-ra, tiltsd le az egeszet. Neten rakeresel, asszem vmi ket sysctl beallitas, sajnos sosem tudom megjegyezni, de az elso ot talalatban benne lesz. Egyre figyelj: _ne_ a modult probald meg kitolteni/feketelistazni/letorolni, hanem kimondottan sysctl beallitast keress.
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal