Here, ignore the 'path: story' -- it is already fixed, but we forgot to remove the custom front-page, which was still using expensive story calls.
The problem is globalize. For some users it has been 20-60s waits, for some 0.0n. Maybe it is worst in front-page, because front-page is located at the root of the portal, so basically it has access to all of the content and if there is something inside globalize that wants to go to subdirectories and do stuff there, it will be slowest here. Unfortunately, these slow moments are rare: once the user/zope? has globalize set, it becomes fast again.
The globalize is located in CMFPlone/browser/plone.py
It goes through lots of tool initializations, most notably portal_workflow and portal_actions. For those we already have done something. You need to set up timetraps like this:
import time
a= time.time()
(some code that you want to measure)
print 'Time at point (1): %s' % str(time.time()-a)
Find out what parts in globalize cause the problems. There may be some that are a bit slow in general, but there is still something huge that you only get sometimes.
Total rendering time for page template 400.62 95 4.21705
All expressions 392.97 28820 0.0136
path: plone_view/globalize 213.72 95 2.24968
path: story 122.3 285 0.42912
python: here.lemill_tool.getStoryCandidate() 50.31 95 0.52958
string: ${ltool/absolute_url}/giveLanguageLink?lang=$lang&url=${request/URL}¶m=$qstr 0.68 1235 0.00055
python: here.portal_css.getEvaluatedResources(here) 0.62 95 0.00653
path: story/getBlurp 0.53 95 0.00558