我们注意到最近一个问题,有时重新部署SSIS包似乎不包括最新的更改......当我使用记事本搜索dtsx时,我在代码中看到修改后的脚本,所以肯定会有更改.
我的假设是SSIS包的脚本组件最终在这个过程的某个地方被编译成一个程序集 - 这很可能是因为我认为C#代码无法在没有首先编译它的情况下运行.因此,理论上如果这些程序集最终会被缓存而不是立即被覆盖(由于某种原因),这将解释这个问题.
让我觉得我的理论是正确的唯一"证据"是,如果我在某个时刻继续运行包,它会突然转向新代码.
然而,到目前为止,我还没有找到为什么以及如何发生这种情况,如果是......有人可以帮忙吗?
更新: MSDN说:"与早期版本不同,您可以指出脚本是否已预编译,所有脚本都在SQL Server 2008 Integration Services(SSIS)和更高版本中预编译." - 如果通过预编译它们意味着而不是实际的包运行预编译版本(我认为这是因为包本身似乎没有编译,因为代码在记事本中可见)必须有一种方法来强制引擎覆盖预编译的程序集......但是如何?
更新: SSIS的四个核心组件之一是SQL ServerIntegration Services服务,它是一个Windows服务.显然,此服务将缓存组件/任务元数据,以便SSIS运行时引擎可以轮询缓存以查看安装的内容,这可能有助于加快程序包加载时间.但是,如果包存储在文件系统中(而不是在SQL Integration Services中)并由代理作业执行,则代理作业将使用64位版本的DTEXEC来执行包.我还没有找到任何证据表明在那里会涉及任何缓存,但是在执行的验证阶段确定检查许多参数肯定有选项,例如版本号 - 可能是有原因的.
假设我在同一个ASP.NET C#WebSite上有两个页面.
我试图以声明方式关闭缓存,尝试在我的重定向中使用true for endResponse ...似乎没有任何区别.
别介意大家!我是个白痴!使用Visual Studio Dev Localhost,Redirect重定向到实时页面!:)
各种Perl脚本(服务器端包含)在网站上调用具有许多功能的Perl模块. 编辑: 脚本使用use lib引用文件夹中的库.在繁忙时段,脚本(而不是库)变成僵尸并使服务器过载.
服务器列出:
319 ? Z 0:00 [scriptname1.pl] <defunct>
320 ? Z 0:00 [scriptname2.pl] <defunct>
321 ? Z 0:00 [scriptname3.pl] <defunct>
Run Code Online (Sandbox Code Playgroud)
我每个都有数百个实例.
编辑: 我们不使用fork,system或exec,除了SSI指令
<!--#exec cgi="/cgi-bin/scriptname.pl"-->
Run Code Online (Sandbox Code Playgroud)
据我所知,在这种情况下,httpd本身将是该进程的所有者.MaxRequestPerChild设置为0,不应让父进程在子进程完成之前死掉.
到目前为止,我们认为暂时暂停某些脚本有助于服务器应对已失效的进程并防止其崩溃,但僵尸进程仍然毫无疑问地形成.显然gbacon似乎与他的理论最接近事实,即服务器无法应对负载.
什么可能导致httpd放弃这些进程?是否有任何最佳做法可以防止这些情况发生?
谢谢
答: 重点是Rob.正如他所说,生成SSI的CGI脚本不会处理那些SSI.SSI的评估发生在Apache 1.3请求周期中CGI的运行之前.这是通过Apache 2.0及更高版本修复的,因此CGI可以生成SSI命令.
由于我们在Apache 1.3上运行,因此对于每个页面视图,SSI都变成了不存在的进程.虽然服务器试图清除它们但是运行任务太忙而无法成功.结果,服务器崩溃了,变得没有响应.作为一个短期解决方案,我们审查了所有SSI并将一些流程移至客户端以释放服务器资源并给予时间清理.后来我们升级到了Apache 2.2.
在客户的网站上有大量重定向到特定页面.此页面需要以某种方式检测请求是直接的(手动输入的URI)还是重定向.
所有重定向都是301重定向.由于SEO规则,需要避免添加指标.(Google使用值分别对URL进行索引)
我已经尝试检查所有环境变量,但它们都是空的(假设是正常的),在这方面内部重定向没有任何不同(我估计).
检测需要实时发生,因此日志文件不是一个选项.
简而言之,参数通过脚本在cookie中注册,然后301重定向到内容由cookie驱动的页面.当cookie被注册时,当有人重新填写地址栏中的地址时,内容将不会更改回原始内容.
我希望这是有道理的.
以前:我在考虑状态代码,但我不确定是否有办法在目标页面上读取它.(我们已经澄清它不会起作用)
我正在尝试将SQL表绑定到Windows窗体应用程序中的单选按钮.
按钮按组框分组.我还没有找到将它们正确绑定到数据源的方法.我知道有些人设法通过创建自定义控件来实现这一目标,但是有更简单的方法吗?
有没有人遇到ds.hasChanges()是假的,尽管ds在断点检查时显然有变化?我一直在看它已经有一段时间了,我看不出有什么问题......
// connectionstring and command has been set
DataSet ds = new DataSet();
BindingSource myBindingSource = new BindingSource();
SqlDataAdapter dataAdapter1 = new SqlDataAdapter();
dataAdapter1.Fill(ds, "Data");
myBindingSource.DataSource = ds.Tables["Data"];
// then changes made to the datatable on a windows form using bindingnavigator
ds.HasChanges(DataRowState.Modified); // is false
Run Code Online (Sandbox Code Playgroud)
现在,当我在使用HasChanges的行之后设置断点并使用DataSet Visualizer时,我可以看到DataSet实际上已经改变,但HasChanges仍然返回false.
我敢肯定我错过了明显的......有人能看出我做错了吗?
干杯
我有一个Windows窗体应用程序,需要在加载主窗口之前加载一堆东西.我认为这样做是合理的ProgressBar,所以我想我会显示另一个包含ProgressBar Control使用我的主窗体构造函数的表单.
一切正常但如果我尝试将文本Label放在介绍表单中,其内容将不会显示,直到加载主表单.除了首先加载介绍窗口之外,这里有一种方法可以避免这种情况吗?
我知道这听起来像ServerFault的问题,但我知道开发人员经常在服务器挣扎时受到指责,所以我认为这里的帖子可能对那些仍在网络上使用Perl的人有用.
我们在旧的Apache服务器上出现了已解决过程的严重问题,因此我们决定迁移到Apache 2.新服务器执行得更好,不可否认.然而,测试显示,在负载很重(每分钟约100个用户)的情况下,已停止的进程会在服务器上快速启动,并且使用SSH很明显这些进程正在使用CPU.为了克服这些问题,我们决定采用CGI ::快速这是一个类型的FastCGI的Perl的.有了这个僵尸已经消失,但性能明智的服务器没有更好的应对.
结果让我认为,如果Apache 2无论如何都能有效地回收资源,那么实现CGI :: Fast并不是真的有意义.
你们中有没有人有过不同的结论吗?