Job queue: Difference between revisions

From USApedia
 
(9 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{Breadcrumbs|align=right|officialwebsite=no|wikipedia=yes}}
{{Breadcrumbs|align=right|officialwebsite=no|wikipedia=yes|mediawiki=yes}}


The '''job queue''' in MediaWiki is a system designed to handle tasks that are too time-consuming or resource-intensive to be performed during a normal web request-response cycle.  
The '''job queue''' in MediaWiki is a system designed to handle tasks that are too time-consuming or resource-intensive to be performed during a normal web request-response cycle.  
Line 5: Line 5:
The job queue allows MediaWiki to defer tasks that do not need immediate execution. This includes operations like updating link tables when templates change, sending notification emails, re-rendering pages after template edits, or any batch processing tasks.
The job queue allows MediaWiki to defer tasks that do not need immediate execution. This includes operations like updating link tables when templates change, sending notification emails, re-rendering pages after template edits, or any batch processing tasks.


== Saintapedia reference ==
== USApedia reference ==


* https://saintapedia.org/w/api.php?action=query&meta=siteinfo&siprop=statistics
* https://openusaproject.com/w/api.php?action=query&meta=siteinfo&siprop=statistics
* [[Special:ApiSandbox]]
* [[Special:ApiSandbox]]


Line 17: Line 17:
# Put the MediaWiki installation path on the line below
# Put the MediaWiki installation path on the line below
MW_INSTALL_PATH="/home/www/www.mywikisite.example/mediawiki"
MW_INSTALL_PATH="/home/www/www.mywikisite.example/mediawiki"
RUN_JOBS="$MW_INSTALL_PATH/maintenance/runJobs.php --maxtime=3600"
RUN_JOBS="$MW_INSTALL_PATH/maintenance/runJobs.php --maxtime=60"
echo Starting job service...
echo Starting job service...
# Wait a minute after the server starts up to give other processes time to get started
# Wait a minute after the server starts up to give other processes time to get started
sleep 60
sleep 1
echo Started.
echo Started.
while true; do
while true; do
Line 40: Line 40:


sudo crontab -e
sudo crontab -e
== Errors ==
* PHP Fatal error:  Allowed memory size of 157286400 bytes exhausted (tried to allocate 20480 bytes) in /var/www/mediawiki/w/includes/parser/Preprocessor_Hash.php on line 704
* PHP Fatal error:  Allowed memory size of 157286400 bytes exhausted (tried to allocate 20480 bytes) in /var/www/mediawiki/w/includes/parser/Preprocessor_Hash.php on line 709
* PHP Fatal error:  Allowed memory size of 157286400 bytes exhausted (tried to allocate 1744896 bytes) in /var/www/mediawiki/w/includes/libs/objectcache/MediumSpecificBagOStuff.php on line 1091
* PHP Fatal error:  Allowed memory size of 157286400 bytes exhausted (tried to allocate 1310720 bytes) in /var/www/mediawiki/w/includes/parser/StripState.php on line 94
* PHP Fatal error:  Allowed memory size of 157286400 bytes exhausted (tried to allocate 262144 bytes) in /var/www/mediawiki/w/includes/parser/Parser.php on line 3916
* PHP Fatal error:  Allowed memory size of 157286400 bytes exhausted (tried to allocate 614400 bytes) in /var/www/mediawiki/w/includes/tidy/RemexCompatFormatter.php on line 88


== External ==
== External ==

Latest revision as of 10:45, 2 December 2024

Job queue on Wikipedia
Job queue on Mediawiki

The job queue in MediaWiki is a system designed to handle tasks that are too time-consuming or resource-intensive to be performed during a normal web request-response cycle.

The job queue allows MediaWiki to defer tasks that do not need immediate execution. This includes operations like updating link tables when templates change, sending notification emails, re-rendering pages after template edits, or any batch processing tasks.

USApedia reference

Example

Cron job

#!/bin/bash
# Put the MediaWiki installation path on the line below
MW_INSTALL_PATH="/home/www/www.mywikisite.example/mediawiki"
RUN_JOBS="$MW_INSTALL_PATH/maintenance/runJobs.php --maxtime=60"
echo Starting job service...
# Wait a minute after the server starts up to give other processes time to get started
sleep 1
echo Started.
while true; do
	# Job types that need to be run ASAP no matter how many of them are in the queue
	# Those jobs should be very "cheap" to run
	php $RUN_JOBS --type="enotifNotify"
	# Everything else, limit the number of jobs on each batch
	# The <tvar name=1>--wait</tvar> parameter will pause the execution here until new jobs are added,
	# to avoid running the loop without anything to do
	php $RUN_JOBS --wait --maxjobs=20
	# Wait some seconds to let the CPU do other things, like handling web requests, etc.
	echo  Waiting for 10 seconds...
	sleep 10
done

Docker

* * * * * docker exec web php maintenance/runJobs.php --maxjobs 700 --maxtime=55

sudo crontab -e

Errors

  • PHP Fatal error:  Allowed memory size of 157286400 bytes exhausted (tried to allocate 20480 bytes) in /var/www/mediawiki/w/includes/parser/Preprocessor_Hash.php on line 704
  • PHP Fatal error:  Allowed memory size of 157286400 bytes exhausted (tried to allocate 20480 bytes) in /var/www/mediawiki/w/includes/parser/Preprocessor_Hash.php on line 709
  • PHP Fatal error:  Allowed memory size of 157286400 bytes exhausted (tried to allocate 1744896 bytes) in /var/www/mediawiki/w/includes/libs/objectcache/MediumSpecificBagOStuff.php on line 1091
  • PHP Fatal error:  Allowed memory size of 157286400 bytes exhausted (tried to allocate 1310720 bytes) in /var/www/mediawiki/w/includes/parser/StripState.php on line 94
  • PHP Fatal error:  Allowed memory size of 157286400 bytes exhausted (tried to allocate 262144 bytes) in /var/www/mediawiki/w/includes/parser/Parser.php on line 3916
  • PHP Fatal error:  Allowed memory size of 157286400 bytes exhausted (tried to allocate 614400 bytes) in /var/www/mediawiki/w/includes/tidy/RemexCompatFormatter.php on line 88

External