jjzjj

asp.net - 在时间紧迫的情况下添加更多硬件 v/s 重构代码

coder 2024-06-28 原文

背景: 企业应用程序 - very will 写于 2004 年。

堆栈: .NET、大量使用 Remoting、ASMX 风格的 Web 服务、SQL Server

问题: 由于缺少更好的术语,该应用程序允许用户通过各种向导,他们的所有操作都存储在我们所谓的“wiz 状态”中,它本质上是 XML,它经常保存到 SQL 服务器数据库中,因为我们允许用户暂停/恢复他们的申请。通常在这些向导中,包含向导状态的 XML 会变得非常大,我说的是 5-8 MB 的数据,我们注意到当同时用户突然涌入时,我们开始偶尔收到数据库超时,因为向导状态的很多组成部分是跟踪“事物”的集合。有时,这些自定义集合会变得非常大。

问题: 我们今天开会,预计 10 月份会有一系列事件,这些事件将以前所未有的方式测试系统,并可能导致从 Web 服务器到数据库的巨大向导状态。关键是只有一个数据库和一个web服务器。

出于争论的考虑,由于应用程序的复杂性,可以说添加任何类型的集群/镜像来增加数据库吞吐量是不可能的。我在 session 上发言说,在最短时间内解决这个问题的最快方法是向前端 Web 应用程序添加更多服务器,以便可以在 Web 服务器之间分配负载。开发负责人说我完全错了,它不会有任何效果,因为我们只有一个数据库,所以添加更多的网络功能也无济于事。他正在让其他开发人员之一减少我们经常保存到数据库的 xml 膨胀。可能从长远来看,减少我们来回传递的 xml 的大小是正确的想法,但添加额外的网络服务器真的没有效果,我只是认为就并发用户而言,它应该 帮助。

感谢任何回复想法,证明更多的网络服务器会有所帮助将是纯粹的胜利。

谢谢。

编辑:我们使用二进制序列化将 XML 存储在数据库中的图像字段中。

最佳答案

我还没有听说过有关定位“瓶颈”的任何消息。这不是要做的第一件事吗? Here's the method I use. 否则你只是在猜测。那是行不通的。

我参加过这样的 session ,每个人都兴奋地四处乱扔想法,“管理层”想做出“决定”,但这是盲人引领盲人。下定决心,找出发生了什么。你不能在 session 中这样做。

前段时间我研究了一个与您的问题有些相似的性能问题。最大的“瓶颈”是编写和解析 XML,以及随之而来的内存分配、设置和销毁。然后还有其他人。您可能会发现相同或不同的东西。

附言我一直引用“瓶颈”,因为我发现的所有性能问题都与瓶颈完全不同。相反,它们就像是过于繁茂的调用树,需要彻底修剪,例如无缘无故地制作和阅读堆积如山的 XML。

关于asp.net - 在时间紧迫的情况下添加更多硬件 v/s 重构代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3623757/

有关asp.net - 在时间紧迫的情况下添加更多硬件 v/s 重构代码的更多相关文章

  1. ruby-on-rails - Ruby net/ldap 模块中的内存泄漏 - 2

    作为我的Rails应用程序的一部分,我编写了一个小导入程序,它从我们的LDAP系统中吸取数据并将其塞入一个用户表中。不幸的是,与LDAP相关的代码在遍历我们的32K用户时泄漏了大量内存,我一直无法弄清楚如何解决这个问题。这个问题似乎在某种程度上与LDAP库有关,因为当我删除对LDAP内容的调用时,内存使用情况会很好地稳定下来。此外,不断增加的对象是Net::BER::BerIdentifiedString和Net::BER::BerIdentifiedArray,它们都是LDAP库的一部分。当我运行导入时,内存使用量最终达到超过1GB的峰值。如果问题存在,我需要找到一些方法来更正我的代

  2. ruby - 我需要将 Bundler 本身添加到 Gemfile 中吗? - 2

    当我使用Bundler时,是否需要在我的Gemfile中将其列为依赖项?毕竟,我的代码中有些地方需要它。例如,当我进行Bundler设置时:require"bundler/setup" 最佳答案 没有。您可以尝试,但首先您必须用鞋带将自己抬离地面。 关于ruby-我需要将Bundler本身添加到Gemfile中吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/4758609/

  3. ruby - 如何在 buildr 项目中使用 Ruby 代码? - 2

    如何在buildr项目中使用Ruby?我在很多不同的项目中使用过Ruby、JRuby、Java和Clojure。我目前正在使用我的标准Ruby开发一个模拟应用程序,我想尝试使用Clojure后端(我确实喜欢功能代码)以及JRubygui和测试套件。我还可以看到在未来的不同项目中使用Scala作为后端。我想我要为我的项目尝试一下buildr(http://buildr.apache.org/),但我注意到buildr似乎没有设置为在项目中使用JRuby代码本身!这看起来有点傻,因为该工具旨在统一通用的JVM语言并且是在ruby中构建的。除了将输出的jar包含在一个独特的、仅限ruby​​

  4. ruby-on-rails - Rails 源代码 : initialize hash in a weird way? - 2

    在rails源中:https://github.com/rails/rails/blob/master/activesupport/lib/active_support/lazy_load_hooks.rb可以看到以下内容@load_hooks=Hash.new{|h,k|h[k]=[]}在IRB中,它只是初始化一个空哈希。和做有什么区别@load_hooks=Hash.new 最佳答案 查看rubydocumentationforHashnew→new_hashclicktotogglesourcenew(obj)→new_has

  5. ruby - 将 Bootstrap Less 添加到 Sinatra - 2

    我有一个ModularSinatra应用程序,我正在尝试将Bootstrap添加到应用程序中。get'/bootstrap/application.css'doless:"bootstrap/bootstrap"end我在views/bootstrap中有所有less文件,包括bootstrap.less。我收到这个错误:Less::ParseErrorat/bootstrap/application.css'reset.less'wasn'tfound.Bootstrap.less的第一行是://CSSReset@import"reset.less";我尝试了所有不同的路径格式,但它

  6. ruby - 默认情况下使选项为 false - 2

    这是在Ruby中设置默认值的常用方法:classQuietByDefaultdefinitialize(opts={})@verbose=opts[:verbose]endend这是一个容易落入的陷阱:classVerboseNoMatterWhatdefinitialize(opts={})@verbose=opts[:verbose]||trueendend正确的做法是:classVerboseByDefaultdefinitialize(opts={})@verbose=opts.include?(:verbose)?opts[:verbose]:trueendend编写Verb

  7. ruby - 如何模拟 Net::HTTP::Post? - 2

    是的,我知道最好使用webmock,但我想知道如何在RSpec中模拟此方法:defmethod_to_testurl=URI.parseurireq=Net::HTTP::Post.newurl.pathres=Net::HTTP.start(url.host,url.port)do|http|http.requestreq,foo:1endresend这是RSpec:let(:uri){'http://example.com'}specify'HTTPcall'dohttp=mock:httpNet::HTTP.stub!(:start).and_yieldhttphttp.shou

  8. ruby - 续集在添加关联时访问many_to_many连接表 - 2

    我正在使用Sequel构建一个愿望list系统。我有一个wishlists和itemstable和一个items_wishlists连接表(该名称是续集选择的名称)。items_wishlists表还有一个用于facebookid的额外列(因此我可以存储opengraph操作),这是一个NOTNULL列。我还有Wishlist和Item具有续集many_to_many关联的模型已建立。Wishlist类也有:selectmany_to_many关联的选项设置为select:[:items.*,:items_wishlists__facebook_action_id].有没有一种方法可以

  9. ruby - 在没有 sass 引擎的情况下使用 sass 颜色函数 - 2

    我想在一个没有Sass引擎的类中使用Sass颜色函数。我已经在项目中使用了sassgem,所以我认为搭载会像以下一样简单:classRectangleincludeSass::Script::FunctionsdefcolorSass::Script::Color.new([0x82,0x39,0x06])enddefrender#hamlengineexecutedwithcontextofself#sothatwithintemlateicouldcall#%stop{offset:'0%',stop:{color:lighten(color)}}endend更新:参见上面的#re

  10. ruby-on-rails - Ruby 检查日期时间是否为 iso8601 并保存 - 2

    我需要检查DateTime是否采用有效的ISO8601格式。喜欢:#iso8601?我检查了ruby​​是否有特定方法,但没有找到。目前我正在使用date.iso8601==date来检查这个。有什么好的方法吗?编辑解释我的环境,并改变问题的范围。因此,我的项目将使用jsapiFullCalendar,这就是我需要iso8601字符串格式的原因。我想知道更好或正确的方法是什么,以正确的格式将日期保存在数据库中,或者让ActiveRecord完成它们的工作并在我需要时间信息时对其进行操作。 最佳答案 我不太明白你的问题。我假设您想检查

随机推荐