小编Jor*_*rdi的帖子

为什么在Windows 2012 Server上的Azure部署比在Windows 2008 Server上慢

我有一个ASP.NET(Webforms)与.Net Framework 4.0一起工作.

如果我部署与该网站osFamily="1"(在Windows 2008服务器上)的.NET CLR120 ms平均值(根据日志NewRelic的).

如果我采用确切的站点并将其部署osFamily="3"(在Windows 2012服务器上),则.NET CLR需要更多500 ms.

我知道我应该搬到MVC4也许.Net Framework 4.5,但我想知道是否有其他人遇到过同样的问题,如果你知道是什么原因造成的?

在此输入图像描述

编辑

看起来osFamily=2也有同样的问题.

.net asp.net performance azure windows-server-2012

52
推荐指数
1
解决办法
1464
查看次数

如何检查是否正在使用索引

我有一个拥有大量数据库,集合和索引的mongodb副本集.

我们做了很多重构和优化,当然,我有很多来自消费者的"创意查询".

我想清理未使用的索引.只是想节省一些空间.

如何检查是否正在使用索引?我可以负担得起索引索引并删除未使用的索引.

在所有可能的查询中运行"解释"不是一个选项:)

编辑:基于接受的答案的解决方案

脚本被窃听了.我不是一个JavaScript专家,但我把更正后的脚本.我希望对某人有用:

DB.prototype.indexStats = function() {
  var queries = [];
  var collections = db.getCollectionNames();

  var findQuery = function(q) {
    for(entryIdx in queries) {
      if(q == queries[entryIdx].query) {
        return entryIdx;
      }
    }
    return -1;
  }

  for(cIdx in collections) {
    var cName = collections[cIdx];
    var nsName = db.getName()+"."+cName;
    if(cName.indexOf("system") == -1) {
      var i = 1;
      var count = db.system.profile.count({ns:nsName});
      print('scanning profile {ns:"'+nsName+'"} with '+count+' records... this could take a while...');
      db.system.profile.find({ns:nsName}).addOption(16).batchSize(10000).forEach(function(profileDoc) {           
        if(profileDoc.query && !profileDoc.query["$explain"]) { …
Run Code Online (Sandbox Code Playgroud)

mongodb

19
推荐指数
2
解决办法
1万
查看次数

实体框架5执行全表扫描

我有以下代码:

public List<anEntity> Get(int page, int pagesize, Func<anEntity, IComparable> orderby)
{            
    using (var ctx = new MyContext())
    {                
        return ctx.anEntity.OrderBy(orderby).Skip(pagesize * page).Take(pagesize).ToList();                    
    }           
}
Run Code Online (Sandbox Code Playgroud)

当我检查我的数据库配置文件(SqlServer 2012)时,我可以看到一个可怕的全表扫描,没有任何"TOP"子句.

有趣的部分:

如果我做类似的事情,但指定具体的顺序:

return ctx.anEntity.OrderBy(x => x.aField).Skip(pagesize * page).Take(pagesize).ToList();
Run Code Online (Sandbox Code Playgroud)

该配置文件显示了一个漂亮的"TOP"条款.

我想避免使用很多方法,每个方法都有一个"orderby"的可能性.任何提示都将非常感激.

c# entity-framework entity-framework-5

9
推荐指数
1
解决办法
736
查看次数

在Azure WebRole上自动启动WCF

我在Azure(WebRole)上托管了一个WCF.WCF做了很多后台任务并回复了一些请愿.

问题是如果WCF长时间没有收到任何请求(10小时或更长时间),应用程序池将在azure实例上回收,并且WCF任务将停止.我做了一些调查,我可以启用一个AutoStart功能来触摸machine.config,但这不是一个azure deploy的选项.

我可以在web.config中启用AutoStart还是部署配置文件?

c# wcf azure iis-7.5

8
推荐指数
1
解决办法
2936
查看次数

MVC4 WebApi进程启动器

我有一个MVC4 API REST尝试在新线程中启动进程.我正在使用框架4.5并尝试使用sync和等待clausules.

我的代码看起来像:

[AcceptVerbs("POST")]
public HttpResponseMessage Launch(string id)
{
    runProcessAsync(id);   // 1                                                        

    return Request.CreateResponse(HttpStatusCode.Accepted); // 2
}

protected async void runProcessAsync(string id)
{
    int exitcode = await runProcess(id);  // 3
    string exitcodesz = string.Format("exitcode: {0}", exitcode);  // 4
    // do more stuff with exitcode
}

protected Task<int> runProcess(string id)
{
    var tcs = new TaskCompletionSource<int>();

    var process = new Process
    {
        StartInfo = { FileName = @"C:\a_very_slow_task.bat" },
            EnableRaisingEvents = true
        };
        process.Exited += (sender, args) => …
Run Code Online (Sandbox Code Playgroud)

.net c# asp.net asp.net-mvc async-await

7
推荐指数
1
解决办法
1557
查看次数

强制应用程序启动Azure Web角色

我在azure上有一个web角色,我想在不等待第一个请求的情况下强制执行A​​pplication_Start.

我设法在我的网站上将"自动启动"属性设置为true

在Azure WebRole上自动启动WCF

但是在第一个请求到来之前不会调用Application_Start.

我不确切地知道我是否遗漏了一些重要的东西.服务器是W2008 R2,IIS版本是7.5

谢谢!

我把解决方案代码放在这里.我希望能帮助别人.我刚刚添加了一个WebRole.cs,只需将该代码放入每30秒执行一次ping操作.请netice我正在浏览Service.svc,因为这是我的端点,你的端点可能是另一个端点.请注意,我要求"Endpoint1".如果您有多个端点,则应该查看该行.

public class WebRole : RoleEntryPoint
{        
    public override void Run()
    {            
        var localuri = new Uri( string.Format( "http://{0}/Service.svc", RoleEnvironment.CurrentRoleInstance.InstanceEndpoints["Endpoint1"].IPEndpoint ) );

        while (true)
        {
            try
            {                    
                var request = (HttpWebRequest)WebRequest.Create(localuri);
                request.Method = "GET";
                var response = request.GetResponse();
            }
            catch { }
            System.Threading.Thread.Sleep(30000);
        }            
    }

    public override bool OnStart()
    {               
        return base.OnStart();
    }
}
Run Code Online (Sandbox Code Playgroud)

azure iis-7.5 webrole

6
推荐指数
1
解决办法
1615
查看次数

Azure Cloud Service陷入困境

我有一个Azure云服务,包括生产部署和暂存部署.

我可以升级,停止,删除......生产部署,但我不能对暂存一个进行任何操作.说:

Windows Azure当前正在此部署上执行xxxxx操作,该操作需要独占访问权限.

我等了整个周末,问题仍然存在.如果我查看我的操作日志,我可以看到该跟踪:

    <SubscriptionOperation xmlns="http://schemas.microsoft.com/windowsazure" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
    <OperationId>xxxxxxxx</OperationId>
    <OperationObjectId>/xxxxxxxx/services/hostedservices/fxcalendar/deployments/xxxxxxxx</OperationObjectId>
    <OperationName>DeleteDeploymentBySlot</OperationName>
    <OperationParameters xmlns:d2p1="http://schemas.datacontract.org/2004/07/Microsoft.WindowsAzure.ServiceManagement">
        <OperationParameter>
            <d2p1:Name>subscriptionID</d2p1:Name>
            <d2p1:Value>xxxxxxxx</d2p1:Value>
        </OperationParameter>
        <OperationParameter>
            <d2p1:Name>serviceName</d2p1:Name>
            <d2p1:Value>xxxxxxxx</d2p1:Value>
        </OperationParameter>
        <OperationParameter>
            <d2p1:Name>deploymentSlot</d2p1:Name>
            <d2p1:Value>Staging</d2p1:Value>
        </OperationParameter>
    </OperationParameters>
    <OperationCaller>
        <UsedServiceManagementApi>true</UsedServiceManagementApi>
        <UserEmailAddress>Unknown</UserEmailAddress>
        <SubscriptionCertificateThumbprint />
        <ClientIP>xxxxxxxx</ClientIP>
    </OperationCaller>
    <OperationStatus>
        <ID>xxxxxxxx</ID>
        <Status>Failed</Status>
        <HttpStatusCode>409</HttpStatusCode>
        <Error>
            <Code>ConflictError</Code>
            <Message>Windows Azure is currently performing an operation with x-ms-requestid xxxxxxxx on this deployment that requires exclusive access.</Message>
        </Error>
    </OperationStatus>
    <OperationStartedTime>2013-11-04T09:04:37Z</OperationStartedTime>
    <OperationCompletedTime>2013-11-04T09:04:38Z</OperationCompletedTime>
</SubscriptionOperation>
Run Code Online (Sandbox Code Playgroud)

我不知道如何恢复Staging部署.我认为只有walkarround才能创建新的云服务并更改DNS.

azure

6
推荐指数
1
解决办法
3303
查看次数

仲裁者不接受连接

(MongoDB版本2.6.3)

我有一个副本集:2个节点+仲裁器.副本集没有问题,但我无法连接到仲裁器:

Failed to connect to myarbiter.com, reason: errno:111 Connection refused
2014-07-16T13:41:59.513+0000 Error: couldn't connect to server myarbiter.com ( myIP), connection attempt failed at src/mongo/shell/mongo.js:148
exception: connect failed
Run Code Online (Sandbox Code Playgroud)

Courios是我可以添加和删除节点到我的副本集.连接到辅助或主要,我可以看到仲裁者:

"_id" : 2,
"name" : "myarbiter:myport",
"health" : 1,
"state" : 7,
"stateStr" : "ARBITER",
"uptime" : 4,
"lastHeartbeat" : ISODate("2014-07-16T13:25:13Z"),
"lastHeartbeatRecv" : ISODate("2014-07-16T13:25:13Z"),
"pingMs" : 111
Run Code Online (Sandbox Code Playgroud)

如果我拖尾mongod.log(在Arbiter上),我可以看到

2014-07-16T13:48:15.583+0000 [initandlisten] connection accepted from SOME_IP:SOME_PORT #46 (37 connections now open)
2014-07-16T13:48:15.754+0000 [conn42]  authenticate db: admin { authenticate: 1, user: "MYUSER", nonce: "xxx", …
Run Code Online (Sandbox Code Playgroud)

mongodb replicaset

6
推荐指数
1
解决办法
1812
查看次数

Rhino Mocks,VerifyAllExpectations

我想跟踪一个使用Rhino Mocks的方法的调用.我们假设我有这个代码:

public class A
{
    protected IB _b;

    public A(IB b)
    {
        _b = b;
    }

    public void Run( string name )
    {            
        _b.SomeCall(new C { Name = name });
    }
}    

public interface IB
{
    void SomeCall( C c );
}    

public class C
{
    public string Name { get; set; }
    // more attributes here
}
Run Code Online (Sandbox Code Playgroud)

测试看起来像:

// prepare
var bMock = Rhino.Mocks.MockRepository.GenerateStrictMock<IB>();
bMock.Expect(x => x.SomeCall(new C { Name = "myname" }));
var sut = new A(bMock); …
Run Code Online (Sandbox Code Playgroud)

c# tdd unit-testing rhino-mocks

5
推荐指数
1
解决办法
5361
查看次数

使用语义记录Windows Azure配置PartitionKey

我正在尝试将Semantinc Logging配置为写入Azure的进程.

我终于设法将事件写入表存储.我的问题是如何定义PartitionKey.

我刚刚插入了几个测试,PartitionKeys是:

2520107100599999999
2520107103599999999
Run Code Online (Sandbox Code Playgroud)

我想要由我定义分区(例如,按天分区).

我怎么做?

这是我的实际配置

<windowsAzureTableSink name="Windows Azure Storage" instanceName="xxxxxxx" connectionString="xxxxxxx">
    <sources>
        <eventSource name="myCompany" level="Error"/>
    </sources>
</windowsAzureTableSink>
Run Code Online (Sandbox Code Playgroud)

logging azure

5
推荐指数
1
解决办法
484
查看次数

如何在Centos 7上为mongodb禁用THP

我刚刚安装了一个Centos 7的新实例

Linux version 3.10.0-229.1.2.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.2 20140120 (Red Hat 4.8.2-16) (GCC) ) #1 SMP Fri Mar 27 03:04:26 UTC 2015
Run Code Online (Sandbox Code Playgroud)

我安装了一个mongodb 3.0,当我连接时,我有这个奇怪的消息:

2015-04-15T07:48:55.583+0000 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2015-04-15T07:48:55.583+0000 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2015-04-15T07:48:55.583+0000 I CONTROL  [initandlisten]
2015-04-15T07:48:55.583+0000 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2015-04-15T07:48:55.583+0000 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
Run Code Online (Sandbox Code Playgroud)

如何禁用此版本的THP?

我没有运气的事情

我可以禁用它运行此命令:

echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag …
Run Code Online (Sandbox Code Playgroud)

linux centos mongodb centos7

4
推荐指数
1
解决办法
2923
查看次数