PHP Fatal Error with LSMCD
Hi,
I'm running the latest version of LSMCD on Cloudlinux 8.9 with cPanel.
I have installed lsmcd using the cpanel install script and the lsmcd service is up and running. However we keep getting a PHP Fatal Error on the website:
[30-Jul-2024 07:04:48 UTC] PHP Fatal error: Uncaught TypeError: get_object_vars(): Argument #1 ($object) must be of type object, string given in /home/murmaiderco/public_html/wp-includes/class-wp-term.php:198 Stack trace: #0 /home/murmaiderco/public_html/wp-includes/class-wp-term.php(198): get_object_vars() #1 /home/murmaiderco/public_html/wp-includes/class-wp-term.php(184): WP_Term->__construct() #2 /home/murmaiderco/public_html/wp-includes/taxonomy.php(971): WP_Term::get_instance() #3 /home/murmaiderco/public_html/wp-includes/class-wp-term-query.php(1132): get_term() #4 /home/murmaiderco/public_html/wp-includes/class-wp-term-query.php(828): WP_Term_Query->populate_terms() #5 /home/murmaiderco/public_html/wp-includes/class-wp-term-query.php(311): WP_Term_Query->get_terms() #6 /home/murmaiderco/public_html/wp-includes/taxonomy.php(1332): WP_Term_Query->query() #7 /home/murmaiderco/public_html/wp-includes/taxonomy.php(2291): get_terms() #8 /home/murmaiderco/public_html/wp-includes/taxonomy.php(3804): wp_get_object_terms() #9 /home/murmaiderco/public_html/wp-includes/post.php(7804): update_object_term_cache() #10 /home/murmaiderco/public_html/wp-includes/class-wp-query.php(3334): _prime_post_caches() #11 /home/murmaiderco/public_html/wp-includes/class-wp-query.php(3824): WP_Query->get_posts() #12 /home/murmaiderco/public_html/wp-includes/class-wp.php(696): WP_Query->query() #13 /home/murmaiderco/public_html/wp-includes/class-wp.php(816): WP->query_posts() #14 /home/murmaiderco/public_html/wp-includes/functions.php(1336): WP->main() #15 /home/murmaiderco/public_html/wp-blog-header.php(16): wp() #16 /home/murmaiderco/public_html/index.php(17): require('/home/murmaider...') #17 {main} thrown in /home/murmaiderco/public_html/wp-includes/class-wp-term.php on line 198
Things I have tried to fix this already without success.
- Installing libmemcached-awesome, copying the files to the right locations and running a cagefsctl --force-update
- Stopping lsmcd and removing /dev/shm/lsmcd and starting it again
- Putting posts, post_meta, users, user_meta in the "Do Not Cache Groups" in the litespeed-cache plugin.
- Switching PHP versions
- Purging the cache in the litespeed-cache plugin
When enabling LogLevel=dbg_medium in the node.conf, I can see that when the page tries to load, there is data being sent up and down to lsmcd, the user is authenticating successfully.
my node.conf is:
#------------------------------------- Repl.HeartBeatReq=30 Repl.HeartBeatRetry=3000 Repl.MaxTidPacket=2048000 Repl.GzipStream=YES Repl.LbAddrs=127.0.0.1:12340 Repl.ListenSvrAddr=127.0.0.1:12340 REPL.DispatchAddr=127.0.0.1:5501 RepldSockPath=/tmp/repld.usock CACHED.PRIADDR=127.0.0.1:11000
CACHED.ADDR=127.0.0.1:11211 #CACHED.ADDR=UDS:///tmp/lsmcd.sock #default is 8, it can be bigger depending on cache data amount Cached.Slices=8 Cached.Slice.Priority.0=100 Cached.Slice.Priority.1=100 Cached.Slice.Priority.2=100 Cached.Slice.Priority.3=100 Cached.Slice.Priority.4=100 Cached.Slice.Priority.5=100 Cached.Slice.Priority.6=100 Cached.Slice.Priority.7=100
Cached.ShmDir=/dev/shm/lsmcd Cached.UseSasl=true Cached.DataByUser=true Cached.Anonymous=false Cached.SaslDB=/etc/sasllsmcd
##this is the global setting, no need to have per slice configuration. User=nobody Group=nobody #depends CPU core CachedProcCnt=8 CachedSockPath=/tmp/cached.usock. TmpDir=/tmp/lsmcd #LogLevel=notice LogLevel=dbg_medium LogFile=/tmp/lsmcd.log #-------------------------------------
The lsmcd.conf log file attached contains the entries of when we try load a pages that's giving the fatal errors. lsmcd.log
What makes this worse, is it's not consistent, if we refresh the home page enough times, eventually it displays, but then intermittently gives the php fatal error. other pages will give a fatal error and after enough refreshes, it will generate the page without css, then on the next refresh its back to the php fatal error.
With memcached disabled in the litespeed-cache plugin, the site works perfect, its only when using memcached is enabled that this occurs. Testing the website with redis also works 100% without fatal errors.
Yes, using LSMCD with SASL seems problematic. No matter how hard we try to get through the PHP stack we can't seem to get it to work the way we'd like it to. Since it's out of our control, no matter the fixes we do to LSMCD or LSCWP doesn't appear to get past the problem, we're moving to a model with Redis and separate user databases. We will be shortly releasing control panel support (WHM/cPanel and Plesk) with full support for this method.