[探讨]应用Applicationduixiang,实现负载平衡任务时,对效率的影响。在我的项目中,Web服务器可以访问若干个业务服务器(提供业务逻辑的实现、数据库访问、文件下载等功能),现在我希望最终用户总数能使用负载最低的业务服务器,所以我利用Asp.net的Application对象统计每个业务服务器在给多少个用户提供服务。
现在我担心的是,更改Application对象的内容时,需要Lock以串行化访问。
请讨论,如果只是这样的代码:
Application.Lock;
Application["Server1Count"]=Application["Server1Count"]+1;
Application.UnLock;
对于500个用户同时访问的情况下。对效率有多大影响?以及有什么方法可以避免或减轻这种对效率的影响。
现在我担心的是,更改Application对象的内容时,需要Lock以串行化访问。
请讨论,如果只是这样的代码:
Application.Lock;
Application["Server1Count"]=Application["Server1Count"]+1;
Application.UnLock;
对于500个用户同时访问的情况下。对效率有多大影响?以及有什么方法可以避免或减轻这种对效率的影响。
现在我担心的是,更改Application对象的内容时,需要Lock以串行化访问。
请讨论,如果只是这样的代码:
Application.Lock;
Application["Server1Count"]=Application["Server1Count"]+1;
Application.UnLock;
对于500个用户同时访问的情况下。对效率有多大影响?以及有什么方法可以避免或减轻这种对效率的影响。
Application["Server1Count"]=Application["Server1Count"]+1;
Application.UnLock;-------------------------此代码是在用户第一次访问是运行还是每次访问都运行?只是简单的计数累加,效率应该不成问题。
Application["Server1Count"]=Application["Server1Count"]+1;
Application.UnLock;
-------------------------
此代码是在用户第一次访问是运行还是每次访问都运行?
只是简单的计数累加,效率应该不成问题。
-------------------------每次访问都运行
我是要做业务服务器的负载均衡。
你说的我不太懂,能不能具体点儿,或相关资料。
static public object SyncServer1Count = new object();然后更改Server1Count的值时:
lock (SyncServer1Count)
{
Application["Server1Count"]=Application["Server1Count"]+1;
}
---->
而跟"Server1Count"无任何关系,则此lock也需要白白等其它地方的lock释放。//上面写错了比如:
Application.Lock();
Application["Table"]=......//当然,如果所有lock都比较合适,中间只是一个赋值操作,其实也不算什么,就怕其中一个lock要进行长时间计算,那其它的lock就惨了
Application.UnLock();