roadmax
Goto Top

Zerstörte PHP Sessions mit Redis

Hallo Zusammen,

ich habe das Problem, dass u.a. meine PHPMyadmin Sessions , die eigentlich 4h dauern sollten, unwillkürlich teilweise nach wenigen Minuten beendet werden. Das Session Management erfolgt über Redis. Ich habe das Gefühl, dass dort etwas im Argen liegt, ich weiß aber nicht, wie ich dem auf die Spur kommen kann, da in keinem Logfile etwas ungewöhnliches zu finden ist. Ich setze auf dem Server Ubuntu 20.04 mit PHP 7.4 ein. Hat jemand eine Idee oder einen Tipp?

Gruß,
Roadmax

Content-Key: 4533210744

Url: https://administrator.de/contentid/4533210744

Printed on: February 25, 2024 at 05:02 o'clock

Mitglied: 4400667902
4400667902 Nov 08, 2022 at 08:17:58 (UTC)
Goto Top
Wäre ja vielleicht mal sinnvoll hier Konfigurations-Details zu Redis und PHP zu nennen. Das würde IMHO mehr Feedback induzieren.

Uk.
Member: Roadmax
Roadmax Nov 11, 2022 at 09:11:36 (UTC)
Goto Top
Kein Problem. Hier der Session Part aus der php.ini:
[Session]
session.use_strict_mode = 0
session.use_cookies = 1
session.use_only_cookies = 1
session.name = PHPSESSID
session.auto_start = 0
session.cookie_httponly =
session.serialize_handler = php

session.gc_probability = 0
session.gc_divisor = 1000
session.gc_maxlifetime = 1440
session.referer_check =
session.cache_limiter = nocache
session.cache_expire = 180
session.use_trans_sid = 0
session.hash_function = 0
session.hash_bits_per_character = 5
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"  

session.save_handler = redis
session.save_path = "tcp://xxx.yyy.zzz.1:6379"  

session.cookie_lifetime = 32400
session.cookie_path = /
session.cookie_domain = .test.de
session.lazy_write = false

und die redis.conf

rdb-save-incremental-fsync yes
aof-rewrite-incremental-fsync yes
dynamic-hz yes
hz 10
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit replica 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
activerehashing yes
stream-node-max-bytes 4096
stream-node-max-entries 100
hll-sparse-max-bytes 3000
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
set-max-intset-entries 512
list-compress-depth 0
list-max-ziplist-size -2
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
notify-keyspace-events ""  
latency-monitor-threshold 0
slowlog-max-len 128
slowlog-log-slower-than 10000
lua-time-limit 5000
aof-use-rdb-preamble yes
aof-load-truncated yes
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
no-appendfsync-on-rewrite no
appendfsync everysec
appendfilename "appendonly.aof"  
appendonly yes
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no
maxclients 30000
replica-priority 100
repl-disable-tcp-nodelay no
repl-diskless-sync-delay 5
repl-diskless-sync no
replica-read-only yes
bind 127.0.0.1
protected-mode yes
port 6379
tcp-backlog 511
 timeout 0
tcp-keepalive 300
daemonize yes
supervised no
pidfile /var/run/redis/redis-server.pid
loglevel notice
logfile /var/log/redis/redis-server.log
databases 16
always-show-logo yes
 stop-writes-on-bgsave-error yes
 rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir /var/lib/redis
replica-serve-stale-data yes

Hat jemand eine Idee?
Mitglied: 4400667902
4400667902 Nov 11, 2022 updated at 09:39:42 (UTC)
Goto Top
Betrifft das nur PHPmyadmin oder auch jede andere Session die du bspw. mit einer eigenen PHP Seite erzeugst?

Monitore Redis doch mal während du mit PHPmyadmin arbeitest
https://redis.io/commands/monitor/
Member: Roadmax
Roadmax Nov 11, 2022 updated at 13:07:52 (UTC)
Goto Top
Das betrifft alle PHP Seiten und deren Sessions. Das Problem mit dem Monitoren ist, dass eine Seite auf dem Server reichlich frequentiert ist und du auf Grund der großen Anfragen nichts sehen kannst.

Kann es sein, dass es hier dran liegt:
session.gc_probability = 0
session.gc_divisor = 1000
session.gc_maxlifetime = 1440

Da die maxlifetime kleiner als 4h ist?
Mitglied: 4400667902
4400667902 Nov 11, 2022 updated at 13:42:02 (UTC)
Goto Top
Nun wenn du die maximale Zeit nur auf 24 Minuten setzt kann die ja nicht 4 Stunden laufen.
Wenn das ein produktives System ist Klone das halt mal in eine Testumgebung(VM) da kannst du in Ruhe testen und ausprobieren, sehe ich ehrlich gesagt kein Problem drin.
session.gc_probability = 0
Und das wird IMHO dafür sorgen das der Speicher ans Limit läuft und Sessions dann wohl deswegen rausgeschmissen werden.