The Arcive of Official vBulletin Modifications Site.It is not a VB3 engine, just a parsed copy! |
|
Deferred Threadviews v1.00 (to reduce server load) Details »» | ||||||||||||||||||||||||||||
Deferred Threadviews v1.00 (to reduce server load)
Developer Last Online: May 2009
Hack name: Deferred Threadviews
Version: 1.00 Purpose: To reduce server load by not updating the view count on every page view but instead keeping the it in memory and writing to the db only occasionally. Functions: ? Logs threadviews to a temporary table, and periodically commits data to the thread table. ? Frequency of writes controlled by server load and a random number. ? Includes optional email notification. vB version tested on: 2.2.6 PHP version tested on: 4.2.0 Acknowledgements: Thanks to MattR for the "store threadviews as list of non-unique ids and use count(*)" suggestion that removed 1 query per pageview. The updating of threadviews has been identified as a main cause of high server loads. This hack basically writes threadviews to a HEAP table (i.e. temporary table residing in memory) and will only update the thread count when the load is below a specified value and a random # value is hit. (The impetus for this hack was an email from my host: They threatened to boot me off my server due to CPU usage "abuse", so as part of a larger effort, I decided to write this hack. *crossing fingers*) SUMMARY of changes: 1) Set 1 Admin CP option 2) Create MySQL table 3) Insert code into SHOWTHREAD.PHP The code will optionally send you an email every time the threadviews are committed to the thread table. More details are in the text file. This is what the email you'll get looks like: Quote:
Version History: 0.9 - Initial Release 0.91 - removed need for reading of temp table before writing to it (thanks to MattR). Note that if you've been using 0.9, you must re-create the my_threadviews table as it's structure has changed. 0.92 - added reporting of the ratio of Original Writes vs. Consolidated Writes. Use this to help in tweaking the frequency of updates. If the ratio is low, (e.g. 2:1, 5:1, etc) it probably means updates are occuring too often. (The ratio will also be low if you have many separate threads that are viewed a small number of times.) 1.00 - No code changes. Changed version to 1.00 since it's been stable for the past 2 months. Show Your Support
|
Comments |
#2
|
||||
|
||||
*still trying to make sense of it all*
|
#3
|
||||
|
||||
Basically it doesn't update the thread table every time a thread is viewed (to incremement the thread views), instead the views are kept in a different table (a HEAP table, much faster than MyISAM tables), and then once in a while updates the real thread table.
It doesn't add any visual features. |
#4
|
||||
|
||||
i like
i know a few boards that would love this |
#5
|
|||
|
|||
Won't the count/update of my_threadviews cause almost as much locking problems as the current thread table?
I would say simply keep inserting a threadID into the table, then have the job update with a count( * ), threadid group by threadid to get the threadIDs. |
#6
|
|||
|
|||
Quote:
Not nearly as much, IMHO. The main problem with the orginal code is that the thread table is read locked (i.e. no reads are allowed) everytime showthread.php is called (or more precisely, every time thread views are updated). Reading of the thread table is one of the most common occurences in vb: it occurs on the home page, on forum display, on showthread, on search, and probably a few others, so the locking "collisions" occur very frequently. With this hack, the my_threadviews table is only read in showthread, so the read "collisions" are kept to a minimum. UPDATE: with your suggestion, the table is only written to so there are almost not table-locking issues. The only time the table is read is when the views are about to be committed to the thread table. Quote:
|
#7
|
|||
|
|||
Ok, I've updated it using Mattr's suggestion.
No more checking the temp table before writing to it. Temp table has changed format, so you have to recreate the table if you've started using the first version. |
#8
|
|||
|
|||
will this make showthreads, and forumdisplay faster to load?
|
#9
|
|||
|
|||
Quote:
So this hack helps for boards with many simultaneous users. If you've got 20 people browsing, you're not going to see any difference. |
#10
|
|||
|
|||
What would be the limit of simultaneous users before you would notice any difference?
|
|
|
X vBulletin 3.8.12 by vBS Debug Information | |
---|---|
|
|
More Information | |
Template Usage:
Phrase Groups Available:
|
Included Files:
Hooks Called:
|