I know that the default TIMEOUT of database mirroring is 10 seconds if you do not change it. And I can use
ALTER DATABASE [DatabaseName] SET PARTNER TIMEOUT 30
to change it to avoid 'accident alerts'. But I want to know, How long time is good for a production database? The 30s, 40s, 60s, or even 120s? Which condition is the most consideration? Thanks in advance.
The best practice is to be 10 seconds or over for timeout because it could trigger a false failure otherwise, the rest depends on your environment and your requirements for disaster recovery and high availability. If you set the number too high, it will take longer for the failover to occur when you do have an issue. The business needs should drive the results, the results should not dictate business needs.
To address what would be a good failover time, as I mentioned, it should be driven by your business requirements. Here are a few guides to developing those requirements: