我有一个使用Akka的Scala应用程序,它接收REST请求,对数据库进行一些操作,并向客户端响应一些信息.实际上,我的数据库操作需要很长时间,而我的启用REST的actor在此期间无法响应新请求,即使我可以同时对数据库运行大量操作.我正在使用javax.ws.rs注释来启用我的actor中的REST方法.
问题; 什么是使我的应用程序能够处理大量并发请求的最佳方法?
编辑:我将添加一些示例代码.
import se.scalablesolutions.akka.actor._
import javax.ws.rs._
@Path("/test")
class TestService {
@GET
def status() =
actorPool !! Status(session).
getOrElse(<error>Unable to connect to service</error>)
}
class TestActor {
def receive = {
case Status() => {
reply(SomeObject.slowDBMethod)
}
}
}
case class Status()
Run Code Online (Sandbox Code Playgroud)
EDIT2:这就是我在日志中得到的内容.我正在从浏览器发送三个请求,因为我可以切换标签并按F5,但RS bean仍然等待第一个请求完成后再处理下一个请求.
[INFO] [2010-08-29 16:27:03,232] [akka:event-driven:dispatcher:global-15] c.n.StatusActor: got Slow request
[INFO] [2010-08-29 16:27:06,916] [akka:event-driven:dispatcher:global-10] c.n.StatusActor: got Slow request
[INFO] [2010-08-29 16:27:10,589] [akka:event-driven:dispatcher:global-3] c.n.StatusActor: got Slow request
Run Code Online (Sandbox Code Playgroud) 关于解决大型网站的扩展问题,我听过几次提到的"碎片"技术.什么是'碎片'技术,为什么这么好?
为什么IE的后续回退color: red;不起作用?
在IE7中,颜色black不是red.
现场演示
HTML:
<div>
<span>Hello</span>
</div>
Run Code Online (Sandbox Code Playgroud)
CSS:
div {
width: 200px;
height: 100px;
background-color: blue;
text-align: center;
}
span {
font-size: 2em;
color: red;
color: rgba(250, 250, 97, 0.9);
}
Run Code Online (Sandbox Code Playgroud)
css颜色上的mozilla mdn列出了不同的选项color: value
color: <value>和值可以是关键字red或rgb(255,0,0)rgba(0,0,0,0) 我正在尝试在Widows Azure上扩展网站.到目前为止,我已经测试了Wordpress,Ghost(博客)和纯HTML网站,它们都是一样的:如果我扩展它们(添加实例),它们就不会更快.我确信我必须做错事......这就是我所做的:
我跑了两次测试.第一次使用单个共享实例,第二次使用此命令使用两个共享实例:
ab.exe -n 10000 -c 100 http://demobootstrapsite.azurewebsites.net/
Run Code Online (Sandbox Code Playgroud)
这意味着ab.exe将使用100个并行线程创建10000个请求.
我希望两个共享实例的测试响应时间明显低于只有一个共享实例的响应时间.但是每个请求的平均时间甚至从一个共享实例的1452.519 ms增加到两个共享实例的1460.631 ms.后来我甚至在8个共享实例上运行了该站点,完全没有任何效果.我的第一个想法是,共享实例可能是问题所在.所以我将网站放在标准VM上并再次运行测试.但问题仍然存在.此外,添加更多实例并不会使网站更快(甚至更慢).
后来我和Scott Hanselman和Stefan Schackow一起讨论了一个视频,他们已经解释了Azure Scaling功能.Stefan说Azure有一种"粘性负载均衡",它会将客户端始终重定向到同一个实例/ VM,以避免与状态良好的应用程序出现兼容性问题.所以我检查了WebServer日志,我发现每个实例的日志文件大小相同.通常这意味着在测试期间使用了每个实例.
PS:在测试运行期间,我已经从本地计算机(来自与服务器不同的网络)检查了网站的响应时间,响应时间约为1.5秒.
以下是测试结果:
######################################
1 instance result
######################################
PS C:\abtest> .\ab.exe -n 10000 -c 100 http://demobootstrapsite.azurewebsites.net/
This is ApacheBench, Version 2.3 <$Revision: 1528965 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking demobootstrapsite.azurewebsites.net (be patient)
Finished 10000 requests
Server Software: Microsoft-IIS/8.0
Server …Run Code Online (Sandbox Code Playgroud) 我们正试图尽可能减轻页面负载.由于ViewState有时可以膨胀到100k的页面,我很乐意完全消除它.
我很想听听其他人用来将ViewState移动到自定义提供程序的一些技巧.
那说,一些警告:
想法?
我有启用 CORS 的 ASP.net WebApi Core。它是 Visual Studio ASP.net Core Web API 模板。添加的唯一代码是 CORS 支持代码:
public void ConfigureServices(IServiceCollection services)
{
services.Configure<CookiePolicyOptions>(options =>
{
// This lambda determines whether user consent for non-essential cookies is needed for a given request.
options.CheckConsentNeeded = context => true;
options.MinimumSameSitePolicy = SameSiteMode.None;
});
services.AddCors();
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
/* other stuff */
app.UseCors(builder => builder
.WithOrigins("https://localhost:44310")
.AllowAnyMethod()
.AllowAnyHeader());
app.UseMvc();
}
}
Run Code Online (Sandbox Code Playgroud)
我的 API 托管在 localhost: 44361和 mycalling WEB 上 localhost: …
我正在使用 HeidiSQL 编辑 MYSQL 数据库,它询问我想使用哪个库进行编辑:
我怎么知道要使用哪一个?
我正在尝试将放置事件附加到 HTML div:
document.getElementById('sub-main').addEventListener("drop",
() => {console.log('DROP')});
Run Code Online (Sandbox Code Playgroud)
但它不火。添加用于测试目的的点击事件有效 - 此点击事件触发:
document.getElementById('sub-main').addEventListener("click",
() => {console.log('Click')});
Run Code Online (Sandbox Code Playgroud)
我读过从返回 falseondragover会有所帮助:
document.getElementById('sub-main').addEventListener("ondragover",
() => {return false});
document.getElementById('sub-main').addEventListener("drop",
() => {console.log('Drop')});
Run Code Online (Sandbox Code Playgroud)
但这也不起作用。我尝试设置draggable为 true:
document.body.setAttribute('draggable', true);
Run Code Online (Sandbox Code Playgroud)
但也没有运气!
将事件侦听器记录到控制台并getEventListeners() 显示所有事件,甚至是我选择的任何随机事件名称:
getEventListeners(document.getElementById('sub-main'));
Run Code Online (Sandbox Code Playgroud)
但是 drop 事件仍然没有触发。有任何想法吗?
我正在寻找一种在javascript中实现决策树的更好方法.作为编程的新手,我的工具箱中的工具数量非常有限.我知道这样做的唯一方法是:.一个巨大的丑陋难以维护并遵循if else if语句.我可以使用switch/case语句并执行状态机类型的事情.
建议和理论表示赞赏.此外,小代码示例将非常有用.谢谢参观.
戴尔
razor web 应用程序无法再在我的计算机上启动。
构建命令dotnet build按预期工作,但dotnet run在第一次警告后卡住了。
C:\dev\mywebapp>dotnet run
Building...
C:\dev\mywebapp\Pages\Admin\Orders\TraderOrderList.cshtml.cs(101,17):
warning CS0219: The variable 'orderId' is assigned but its value is
never used [C:\dev\mywebapp\MyWebApp.csproj]
C:\dev\mywebapp\Pages\Index.cshtml.cs(23,24):
warning CS0414: The field 'IndexModel._currentAd' is assigned but its value is
never used [C:\dev\mywebapp\MyWebApp.csproj]
--- after here it is stuck no more output and i stopped it after about 3 minutes
Run Code Online (Sandbox Code Playgroud)
c:\dev\webtemp>dotnet new webapp -o HelloWebAppc:\dev\webtemp\HelloWebApp>dotnet run。所以这按预期工作。我在 stackoverflow 上搜索了其他问题,但没有遇到同样的问题。