session_start() Performance Probleme

Hallo liebes Forum,

in unserem Shop habe ich das Problem, dass mir immer mal wieder über Tideways die Problematik aufgezeigt wird, dass session_start() extreme lange Ladezeiten aufweißt. Dahinter verbirgt sich ein SQL welches von Tideways nicht erfasst werden kann und ich daher nicht genau weiß, was gemacht wird.

Nach ein wenig Recherche gehe ich aktuell davon aus, dass hier die GC zuschlägt, da es nur immer mal wieder vorkommt. 

Welche Vorkehrungen kann ich treffen, dass ich hier keine solchen Hänger habe?

Einstellungen von unterschiedlichsten Parameter über PHP Info() sind wie folgt:

DirectiveLocal ValueMaster Value
zend.enable_gc On On
session.gc_divisor 1000 1000
session.gc_maxlifetime 604800 1440
session.gc_probability1 1

Infos zur Session Tabelle in der DB:

mysql> SHOW TABLE STATUS like ‘s_core_sessions’;
±----------------±-------±--------±-----------±-----±---------------±------------±----------------±-------------±----------±---------------±--------------------±------------±-----------±----------±---------±---------------±--------+
| Name            | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time         | Update_time | Check_time | Collation | Checksum | Create_options | Comment |
±----------------±-------±--------±-----------±-----±---------------±------------±----------------±-------------±----------±---------------±--------------------±------------±-----------±----------±---------±---------------±--------+
| s_core_sessions | InnoDB |      10 | Compact    |  168 |            780 |      131072 |               0 |        16384 |  11534336 |           NULL | 2019-09-20 18:31:25 | NULL        | NULL       | utf8_bin  |     NULL |                |         |
±----------------±-------±--------±-----------±-----±---------------±------------±----------------±-------------±----------±---------------±--------------------±------------±-----------±----------±---------±---------------±--------+
1 row in set (0.01 sec)

Anzahl der Sessions sollte es daher auch nicht sein. Aktuell bin ich ein wenig ratlos und die Suche hier im Forum hat mich aktuell nur auf die Thematik mit dem GC gebracht.

Vielen Dank schon mal vorab für eure Unterstützung.

 

Hallo zusammen,

keiner eine Idee was hier zu dem Problem führen könnte?

Gruß

Peter

Hat denn der Shop viel last? Vielleicht solltest du dir dann Redis als Session Storage anschauen

Hallo  @Shyim‍,

danke für deine Antwort. Nein wirklich viel Traffic ist da nicht drauf. 400k Requests über den gesamten Shop in einer Woche. Genau das wundert mich ja.
Die Frage, die sich mir stellt ist ja ob das wirklich Auswirkung hätte oder nicht?

Du kannst sonst in der php.ini den session gc später machen

OK, was genau müsste ich dafür in der php.ini umstellen?

session.gc_divisor

https://www.php.net/manual/en/session.configuration.php#ini.session.gc-divisor

Hallo Shyim, danke für den Hinweise.

In der ersten Frage habe ich bereits hinterlegt welche Variablen hier verwendet werden: 

session.gc_divisor 1000 1000
session.gc_probability1 1

Sprich es besteht ja aktuell nur ein 0,001% Chance, dass der GC zuschlägt. Leider kommt das viel häufiger vor als die berechnete Wahrscheinlichkeit.

Wäre es möglich, dass die max_lifetime zu hoch angesetzt ist? und das wenn der GC anschlägt dann einfach viel zu viel zu tun ist?