[support] problem with too many modules

Matej Svetlik matej.svetlik at cetelem.sk
Wed Jan 7 12:28:44 UTC 2009


hello, 
thanks for all replies

here is what i got so far:

> The main problem is that Drupal 5 and earlier by design loaded ALL
code on 
> every page load.  In Drupal 6 we introduced split include files for
page 
> callbacks, so most of those "foo.admin.inc" and "foo.pages.inc" files
are not, 
> in fact, loaded on every page request but only when needed.  There are
similar 
> techniques that individual modules can implement if necessary for
their own 
> code, and some of the larger ones like Views and CCK do, but there's
no 
> central mechanism for it.

All my modules are split to many .inc files loaded only when needed. But
drupal 
still includes all 67 .module files.

> Hooks aren't the issue per se, although it is true that there's a cost
to 
> checking 50 modules for a hook.
> 
> Both of those are seeing major improvements in D7, but they're not
anywhere 
> near production ready yet.


> An opcode cache will help immensely for the first problem, as that's
the main 
> thing it solves.  Proper tuning of the cache (you can set it to not
even stat 
> the disk) will help, too.
I tried APC ... load times are faster but not enough :D
(according to APC stat, there is enough cache memory and other settings
seem OK too)
I tried turn off file modification chceking ... not much improvement
and APC include_once hack ... with that option set, drupal refused to
start ...

> Beyond that, depends on your modules.  You may find some you do not,
in fact, 
> need.  
Actually, problem is that i need all of them ;). There are few core
modules. All other modules are custom and are used daily. (Most of them
are just form and "do-something-with-external-system" when submitted.)

> Others you could look into improving by implementing some sort of
lazy-
> loading mechanism like Views does.  (I believe Views' mechanism is
being split 
> off to the ctools module, now in alpha.)  You'd have to work with the 
> maintainers for those.  Some modules wouldn't really support it,
sadly.
> For external systems, definitely look into proper caching, even if you
think 
> it's fast.  You can also look into tuning the block cache, or using
memcache 
> instead of the default db caching, perhaps, but that's probably
overkill if 
> you are just running an intranet server.

Problem with caching is that all modules use "live" data, or are
generating unique reports. I can't cache anything.

> Anyway, that's just general purpose advise.  And, um, no, don't hack
core.  
> Really.  You will regret it.  Maybe not today, maybe not tomorrow, but
soon, 
> and for the rest of your life.

I know that hacking core is the last resort and is generally bad
idea :D.

-------------------------------------------------------------------------------------------------

And there is another thing that can help: I need that only one module
(used most and in critical process) should be as fast as possible. So i
tried little trick:
There is function list_modules in core returning list of modules witch
are then loaded. As i only need one module to be as fast as possible and
i don't really care about others. In the list_modules function i check
witch module is being loaded (something like if $q is like /is/*). If
it's my module - instead of full module list, I return manually created
reduced module list. Result is that only 17 modules out of 67 are
loaded ... but the problem is that it didn't helped much :( - maybe the
bottleneck is somewhere else and not in drupal module load system.


I'm going to try few more tricks :) and I write back when I find out
something interesting.









-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.drupal.org/pipermail/support/attachments/20090107/fa4fe505/attachment-0001.htm 


More information about the support mailing list