Thursday, January 26, 2017

Unable to connect to POP3

The other day I was troubleshooting an issue where a couple of business applications could not connect to their mailbox using POP3.

First, I made sure that both POP3 services were running across all servers., Then, I enabled POP3 logging by running the following cmdlet:
Set-PopSettings -Server “server_name” -ProtocolLogEnabled $True
And restarted the POP3 service. However, I couldn’t find anything in the logs...

So, I turned to telnet. Using this great tool and by connecting to one particular server, everything seems to be working fine. However, when connecting to another server, I would not get the usual banner, but only a blank screen! OK, definitely something not right with POP3...

It turns out this issue was occurring because the PopProxy component was in Inactive state for this particular server! I found this by running the following cmdlet:
Get-ServerComponentState “server_name” -Component PopProxy


We can use the following cmdlet to determine which requester made PopProxy inactive:
Get-ServerComponentState “server_name” -Component PopProxy).LocalStates

In my case, the requester was HealthAPI that changed the state of PopProxy to Inactive. As such, in order to bring it back to an Active state, all we have to do is run:
Set-ServerComponentState “server_name” -Component PopProxy -State Active -Requester HealthAPI


And all is back to normal! :)

Monday, January 23, 2017

Get-MoveRequest Queued "Job is waiting for resource reservation"

The other day I was trying to move a 5 MB mailbox from one server to another (both running Exchange 2013) when I noticed the move request was stuck on Queued for a long time. The first thing I did was checking the statistics of the move request by running the following cmdlet:
Get-MoveRequest | Get-MoveRequestStatistics | FL

In the stats I could see the following warning/error:
Job is waiting for resource reservation. MRS will continue trying to pick up this request. Details: Resource reservation failed for 'LocalServer/ServerRead' (Processor): load ratio 4.2, load state 'Overloaded', metric 64. This resource is currently unhealthy.





This would change intermittently to the following warning/error:
Message: Resource 'Processor' is unhealthy and shouldn't be accessed.




This could also be seen in the Application Event Log of the server:
Log Name:      Application
Source:        MSExchange Mailbox Replication
Date:          1/19/2017 10:25:09 AM
Event ID:      1121
Task Category: Request
Level:         Error
Computer:      server.domain.com
Description:   The Microsoft Exchange Mailbox Replication service was unable to process a request due to an unexpected error. Request GUID: 'e2f8d856-f258-4cab-a1d1-dde19df2a000' Database GUID: '3479f71f-df65-48ff-a80d-9379495b6aac' Error: Resource 'Processor' is unhealthy and shouldn't be accessed.

The cause is self-explanatory: high CPU usage. When I checked the server’s CPU, this was indeed the case:

The possible workarounds are to stop any CPU-intensive processes (if there are any that can be stopped), investigate what is causing the high CPU and fix it, or wait for the CPU usage to come down at which point the move request will resume automatically.

You may also see similar warnings for other resources such as disk IOPS for example:
Resource reservation failed for 'MdbWrite(“database_name”)' (MdbLatency(“database_name”)): load ratio -1, load state 'Unknown', metric (null).
or
Resource reservation failed for 'Mailbox Database/MdbWrite' (CiAgeOfLastNotification(“database_name”)): load ratio X.XXXXXXX, load state 'Critical', metric 2147483647. This resource is currently unhealthy.