Summary
Symptoms: A Mac exhibits slow browsing of network folders and sporadic file locks.
Cause: This can be the result of a specific Finder bug that Apple that introduced in OS X Mavericks (10.9). It is still present in later versions: OS X Yosemite (10.10), Capitan (11.11), and Sierra (10.12).
Solution: This issue is resolved in macOS High Sierra 10.13. See below for recommendations for earlier version of macOS.
Background
The Finder is the default application that macOS uses for working with files and folders, similar to File Explorer on Windows. The Finder generally works well but has some quirks that can affect performance, especially over networks.
One characteristic is that the Finder builds a cache of information about every folder a user visits during a session. The cache is not automatically pruned, so it can grow large as the user browses folders.
Unfortunately, in OS X 10.9, Apple introduced a bug that still remains through 10.12: If Icon Previews are enabled (the default), the Finder will continue to ask the server for updates about all the visited folders every 30 seconds, even when relevant Finders windows have been closed. This occurs over any AFP connection, even to another Mac client or server.
This leads to two key problems:
- The Finder won’t do anything else until it finishes each update request.
- The Mac can flood the server with requests for background enumeration of the folders -- sometimes 10,000 or more requests per second. With multiple Macs connected, a server can receive millions of requests. This can overload the server by disrupting regular workflows of the operating system, the file system and file services like Acronis Files Connect.
Avoiding Problems
For macOS 10.9-10.12, the best solutions are workarounds that can improve the Mac's behavior. These can also be helpful for improving performance on any version of macOS, independent of the bug.
Disable the Icon Preview setting
The most direct way to minimize the problem is to set the Finder to disable Icon Previews by default. It will still show icons based on the file type -- rather than a small preview of the document's first page. Either way, the user can still preview a specific document by pressing the space bar to open a Quick Look preview. That's much more useful than icon previews in most cases, especially for list views. For a detailed explanation and steps, see
http://osxdaily.com/2013/01/10/disable-finder-icon-thumbnails-previews-m...
Note that while each Mac user can change their own settings by clicking "Use as Default", actions of another user could override it for a particular folder. The complication relates to the Finder's .DS_Store file, which is a hidden file the Finder can store in a folder to set per-folder preferences. For example: Let's say that User D has Icon Previews disabled, but User E has them enabled. If User E copies a local folder to the server, it will contain a .DS_Store file for the folder with Icon Previews enabled. If User D then browses to the folder, he would use it with Icon Previews enabled, based on the .DS_Store file. Because of that it's best to coordinate having all Mac users involved with a share disable the setting at the same time. Some customers have used scripts to delete the .DS_Store files.
Disable the Preview Pane
The Mac Finder can show a Preview Pane on the right side. When browsing files on a network share, this can result in a lot of additional requests. Disabling the Preview pane can improve performance -- that's long been the case, independent of the 10.9+ bug. From the Finder's View menu select Hide Preview. As above, users can still preview any specific document by pressing the space bar
Optimize Folder Structures
If feasible, consider restructuring folders to reduce the number of items per level, by grouping files into subfolders.
Note that the number of requests (excess or not) sent by the Mac is related to the number of items the Finder is trying to display at a given folder level -- folders with thousands of items at one level are very likely to trigger the problem. If a user browses into a folder that has 500 files and 4 subfolders, the Finder ask for information related to 504 items. The subfolders might contain thousands of additional files, but those requests will only occur if the user browses down into specific subfolders.
Minimize Latency
If possible, keep the Macs and servers on the same LAN. It's best to keep ping times to a few milliseconds.
It's well known that the Mac Finder is not optimized for network latency. Even with versions of Mac OS X before 10.9, folder browsing will slow down as latency increases. For example, a Mac user browsing over a VPN / WAN connection with 30ms latency, is likely to encounter delays opening each folder, even though a Windows user in the same situation may see nearly immediate results. The problem is proportional to the number of items at per level (see Optimize Folder Structures above). And of course, it's compounded by the excess requests discussed here.
Consider Finder alternatives
Another option is to have some or all Macs browse files using an alternative to Apple's Finder. A popular and effective one is PathFinder. We have tested it and confirmed it works well with Acronis Files Connect and does not trigger the excessive requests as the Finder does. It also adds many other capabilities.
Resolving Problems
From a Mac
Either of the following methods will stop the current requests from a particular Mac and almost immediately free up the resources the server was spending to handle those requests.
- Finder Restart: Once the Mac starts sending the excess requests, the performance can be reduced for that user and potentially others accessing the server. One way to stop the problem is to do a simple restart of the Finder (not the whole Mac, of course). Restarting the Finder is actually quick and low impact. -- just right click on the Finder icon on the Mac dock, and click Relaunch. Network volumes will remain mounted and files opened across the network can continue being edited.
- Dismount / Remount Volumes: Dismounting the network volume (and reconnecting if needed) will also stop the requests. But the Finder restart may be preferable since the user does not need to remount and can keep network files open.
From a Server
To force an end to requests from many Macs, the share can be temporarily suspended, through the Files Connect Administrator, or by restarting the Acronis Files Connect service (which would of course affect all of its AFP shares). Users who need the share could then remount.
Troubleshooting
To confirm or assess the impact of the Finder requests, you can do the following:
Server Diagnostics (if running Acronis Files Connect on Windows)
1. Find the Acronis Files Connect log in the installation folder -- by default, C:\Program Files (x86)\Acronis\Access\Files Connect\Logs\AcronisAccessConnect. The current log will be called Acronis Files Connect LOG.TXT, and older zipped versions may be present.
2. Open the file in a text editor and search for AfpCommands. You will find one or more lines like this: x AfpCommands since last logging. If x is in the millions that is a likely sign of the problem.
3. If you'd like to test with the count logged more frequently, you can specify the number of seconds through the following registry key: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ExtremeZ-IP\Parameters4\DebugRefreshable\DebugLogTimestamp. The change will take effect when the Acronis Files Connect service is restarted, or immediately after clicking the Refresh Registry button at Files Connect Administrator > Settings.
Mac Diagnostics
1. From a connected Mac, open the Activity Monitor.
2. Open the Network tab and let it establish a baseline of network activity.
3. Close open files and quit applications, then close any Finder windows. On a Mac without the issue, network activity will decrease to a minimal level. On a Mac generating exccessive enumerations, network activity will remain high, similiar to the baseline.
4. On a Mac with high network activity, use the macOS Force Quit feature to relaunch Finder, the network activity should drop to a minimal level.