helpd uses 100% CPU after installing any application with documentation

From thread https://discussions.apple.com/thread/3209466

« Jan 2, 2012 11:45 AM in response to zeBob

Helpd updates all of the Application help files on your Mac.

However, I hate having helpd launching repeatedly and seemingly randomly, taking up 1 gig of RAM, and using so much CPU time that the fans go loudly full blast on my MacBook Pro. I prefer having my MacBook Pro be quiet.

Upon investigation, I found that helpd is controlled by a System LaunchAgent plist which is run on startup:

/System/LaunchAgents/com.apple.helpd.plist

When examining the contents of this plist using XCode, what you find is that:

  1. helpd is run when it is loaded by the system at startup or login

  2. helpd is run on every Sunday at 2:30 AM

  3. the launch agent watches the following folders and runs helpd whenever the folders change:

    /Applications/

    /Applications/Utilities/

The biggest problem is the watch folders. They change whenever you open them (i.e. their modified date changes when opened). They change when you install a new application. Many applications change their Application folder content when run. etc. etc.

(Lingon is a simplified launch agent and launch daemon editor. Lingon 3, by the way, cannot manage anything other than your own user's launch agents and launch daemons. It is limited by Apple's new App Store rules. Lingon 2 can open up system launch agetns and launch daemons. But it is missing many of the plist fields revealed by using XCode. For example, it will show the /Applications/ watch folder. But there are TWO watch folders - the second one is /Applications/Utilities/ Thus, Lingon may cause problems by modifying the system launch agents and daemon plists by missing several fields. I don't recommend Lingon other than to create your own user launch agents and daemons - with Lingon 2 being a much more capable version)

The easiest solution is to use Xcode or another plist editor to modify the com.apple.helpd.plist to change the watch folders.

I changed /Applications/ to /Applications/Utilities/ and left the second watch folder /Applications/Utilities/

Since I seldom open /Applications/Utilities/ this causes helpd to launch far less often.

You can also just simpliy eliminate the watch folders. This keeps helpd running on Sundays at 2:30 AM or on startup or login.

When users get rid of many older applications, they see helpd launch less often since these older applications may be the ones modifying the /Applications/ folder.

If you have only newer applications or few applications, you don't run into the helpd problem as often or at all. This is why few people complain about helpd. Only the users who have numerous applications (particularly older ones or ones not bought from the App Store) run into this problem.

Here are the contents of the com.apple.helpd.plist:

      <key>EnableTransactions</key>

      <true/>

      <key>EnvironmentVariables</key>

      <dict>

                <key>NSRunningFromLaunchd</key>

                <string>1</string>

      </dict>

      <key>Label</key>

      <string>com.apple.helpd</string>

      <key>LimitLoadToSessionType</key>

      <array>

                <string>Aqua</string>

                <string>LoginWindow</string>

      </array>

      <key>MachServices</key>

      <dict>

                <key>com.apple.helpd</key>

                <true/>

      </dict>

      <key>OnDemand</key>

      <true/>

      <key>Program</key>

      <string>/System/Library/PrivateFrameworks/HelpData.framework/Versions/A/Resourc es/helpd</string>

      <key>RunAtLoad</key>

      <true/>

      <key>StartCalendarInterval</key>

      <dict>

                <key>Hour</key>

                <integer>2</integer>

                <key>Minute</key>

                <integer>30</integer>

                <key>Weekday</key>

                <integer>7</integer>

      </dict>

      <key>WatchPaths</key>

      <array>

                <string>/Applications/</string>

                <string>/Applications/Utilities/</string>

      </array>

»