所以,有
作为MongoDB的C#驱动程序可用.
哪一个是最成熟稳定的?你为什么选择其他两个呢?
他们生产准备好了吗?
我们有一个度量标准,每当用户在我们的网站上执行某个操作时,我们就会递增,但这些图表似乎并不准确.
为了摆脱这种预感,我们投入了updated.log的碳,并发现今天的动作发生了超过4千次(使用grep和wc),但根据图的积分结果,它只返回220ish.
可能是什么原因造成的?正在使用statsd php库向statsd报告数据,并且statsd::increment('metric');如上所述,该日志确认此密钥今天发生了4,000多次更新.
我们正在使用:
石墨0.9.6,带有statsD(etsy)
我正在比较在IIS 7下运行的NancyFx和ServiceStack.NET的性能(在Windows 7主机上进行测试).两者都非常快 - 在本地测试每个框架进程超过10,000 req/sec,ServiceStack的速度提高了约20%.
我遇到的问题是ASP.NET似乎正在缓存来自HttpHandler的每个唯一URI请求的响应,很快导致大量内存压力(3 GB以上)和垃圾收集器过度工作(大约25%的时间消耗GC).到目前为止,我一直无法禁用对象的缓存和构建,并且正在寻找有关如何禁用此行为的建议.
请求循环基本如下:
for i = 1..100000:
string uri = http://localhost/users/{i}
Http.Get(uri)
Run Code Online (Sandbox Code Playgroud)
响应是一个简单的JSON对象,格式为{UserID:n}.
我已经破解了打开的WinDBG,并且每个请求都有:
System.Web.FileChangeEventHandlerSystem.Web.Configuration.MapPathCacheInfosSystem.Web.CachedPathDatasSystem.Web.Caching.CacheDependencysSystem.Web.Caching.CacheEntrys显然,这些缓存项目让我相信它是一个缓存膨胀问题(我很想摆脱150,000个无法使用的对象!).
在web.config中
<system.web>
<caching>
<outputCache enableOutputCache="false" enableFragmentCache="false"/>
</caching>
</system.web>
Run Code Online (Sandbox Code Playgroud)同样在web.config中(以及策略的许多变体,包括无).
<caching enabled="false" enableKernelCache="false">
<profiles>
<add policy="DontCache" kernelCachePolicy="DontCache" extension="*/>
</profiles>
</caching>
Run Code Online (Sandbox Code Playgroud)查看框架的源代码,看看是否可能存在使用ASP.NET缓存的任何"功能".虽然有缓存帮助程序,但它们对框架本身是私有的,并且似乎不利用ASP.NET缓存.
通过反射器挖掘我发现将值设置UrlMetadataSlidingExpiration为零消除了过多内存使用的大部分,代价是将吞吐量减少50%(FileAuthorizationModule类缓存FileSecurityDescriptors,生成时必须有些昂贵,UrlMetadataSlidingExpiration是非零).
这是通过更新web.config并将以下内容放入:
<hostingEnvironment urlMetadataSlidingExpiration="00:00:00"/>
Run Code Online (Sandbox Code Playgroud)
如果可能的话,我将尝试完全禁用FileAuthorizationModule运行,看看是否有帮助.但是,ASP.NET仍然会生成2*N MapPathCacheInfo和CacheEntry对象,因此内存仍在消耗,速度要慢得多.
另一半问题与此处描述的问题相同:阻止许多不同的MVC URL填充ASP.NET缓存.设置
<cache percentagePhysicalMemoryUsedLimit="1" …
我最近在WinForms应用程序中查看了一些.NET"内存泄漏"(即意外的,挥之不去的GC根源对象).在加载然后关闭一个巨大的报告之后,即使在几个gen2集合之后,内存使用量也没有像预期的那样下降.假设报告控件被一个迷路事件处理程序保持活着,我破解了打开WinDbg以查看发生了什么......
使用WinDbg,该!dumpheap -stat命令报告了字符串实例消耗了大量内存.使用!dumpheap -type System.String命令进一步完善了这一点,我找到了罪魁祸首,一个用于报告的90MB字符串,地址为03be7930.最后一步是调用!gcroot 03be7930以查看哪些对象保持活着状态.
我的期望是不正确的 - 它不是一个悬挂在报告控件(和报告字符串)上的非挂钩事件处理程序,而是由一个System.Text.RegularExpressions.RegexInterpreter实例保留,该实例本身是一个的后代System.Text.RegularExpressions.CachedCodeEntry.现在,Regexs的缓存(有点)是常识,因为这有助于减少每次使用时重新编译Regex的开销.但是,这与保持我的弦活着有什么关系呢?
基于使用Reflector的分析,事实证明只要调用Regex方法,输入字符串就存储在RegexInterpreter中.RegexInterpreter保留此字符串引用,直到通过后续Regex方法调用将新字符串输入其中.我希望通过挂在Regex.Match实例上以及其他可能的类似行为.链是这样的:
违规的Regex仅用于报告,很少使用,因此不太可能再次用于清除现有的报告字符串.即使后来使用正则表达式,也可能会处理另一份大型报告.这是一个相对重要的问题,只是简单的感觉很脏.
总而言之,我找到了一些关于如何解决或至少解决这种情况的选项.我会先让社区回复,如果没有人提出来,我会在一两天内填补空缺.
所以我有一个用C#编写的CodeDOM编译器,它应该根据其中一个资源编译另一个应用程序.我如何更改资源(或编译器的输出可执行文件)的目标.NET框架?
以下代码必须如何更改才能将此YouTube关闭?
<embed src="http://www.youtube.com/v/etnh6_omu0w&hl&rel=1&autoplay=1&sound=1" type="application/x-shockwave-flash"
allowscriptaccess="always" allowfullscreen="true" width="200"></embed>
Run Code Online (Sandbox Code Playgroud) 我正在寻找有关如何处理以下设计问题的建议(使用基于stackoverflow的虚构示例).我试图避免贫血领域模型,并寻求针对此类案例的一般"最佳实践"建议.
假设正在为stackoverflow开发一个新功能,只要他/她的问题收到10个upvotes就会向问题所有者发送电子邮件通知.
域对象模型是这样的:
public class Question
{
string Question { get; set; }
IList<Votes> Upvotes { get; set; }
User Owner { get; set; }
public void AddUpvote(Vote upvote)
{
Upvotes.Add(upvote);
}
}
Run Code Online (Sandbox Code Playgroud)
更改AddUpvote()以获取IEmailerService参数并在AddUpvote()方法中执行逻辑.
public void AddUpvote(Vote upvote, IEmailerService emailer)
{
Upvotes.Add(upvote);
if ( Upvotes.Count == 10 )
{
emailer.Send(Owner.EmailAddr);
}
}
Run Code Online (Sandbox Code Playgroud)检测此状态AddUpvote()并AddUpvote()从IoC容器中解析IEmailService(而不是将IEmailerService作为参数传递).
在调用的外部服务对象中检测此状态question.AddUpvote().
public void UpvoteClickHandler(Question question)
{
question.AddUpvote(new Upvote());
if ( question.Upvotes.Count == 10 …Run Code Online (Sandbox Code Playgroud)我使用RedisConnection Set方法设置字节数组但是如何获取数据?get返回一个包装的字节数组?
链接:
这有效,但感觉不对:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using BookSleeve;
using ProtoBuf;
using System.IO;
namespace RedisTest001
{
[ProtoContract, Serializable]
public class Price
{
private string _ticker;
private double _value;
public Price()
{
}
public Price(string ticker, double value)
{
_ticker = ticker;
_value = value;
}
[ProtoMember(1)]
public string Ticker
{
get { return _ticker; }
set { _ticker = value; }
}
[ProtoMember(2)]
public double Value
{
get { return _value; }
set …Run Code Online (Sandbox Code Playgroud) c# ×2
.net ×1
asp.net ×1
audio ×1
booksleeve ×1
caching ×1
codedom ×1
graph ×1
graphite ×1
httphandler ×1
memory-leaks ×1
mongodb ×1
nancy ×1
node.js ×1
norm ×1
protobuf-net ×1
redis ×1
regex ×1
servicestack ×1
statsd ×1
youtube ×1