Spencer has written by far THE BEST blog post on configuring User Profile Service (UPS) Application in SharePoint 2010. Below are the steps I always check/validate when I provision the UPS:
1) Add SPFarm admin account to local administrators group
2) Allow log on locally to SPFarm admin account
3) Start the UPS synchronization service
4) Once UPS is provisioned successfully, remove the SPFarm admin account from the local administrators group
Today while configuring UPS for my demo environment I had this issue where User Profile Synchronization service was not starting at all. I checked, validated with the steps above, still no luck. The UPS would start to configure the FIM services (which I monitored via the services.msc snap-in) and then fail to do so after some time. Unfortunately, ULS logs did not have any errors logged.
Digging deeper into Spencer’s article, I found this:
After clicking Start in Services on Server, nothing happens for 20 minutes and UPS is not provisioned. No ILM Configuration steps are logged to the ULS
This condition occurs when a Fully Qualified Name (FQDN), for example, SQLSERVER1.domain.com, or IP Address has been used as the address for the SQL Server in the SharePoint Configuration Wizard (PSConfig) when creating the Farm. UPS (amongst other things) has major issues with FQDNs and IP addresses. Don’t use them! Use a NetBIOS name (e.g. SQLSERVER1) or a SQL Server Alias when creating the farm.
Yes, I had used the FQDN as my SQL Server in the SharePoint configuration wizard! I totally forgot UPS does not like FQDN! As a best practice always use a SQL alias for your testing/production environments and SQL server short name for your development environment!