今天下午咱們將生產環境中一個單臺服務器 QPS(每秒請求數)在100左右的 ASP.NET Core 站點部署到了 Linux 服務器上,這是咱們解決了在 .NET Core 上使用 EnyimMemcached(memcached客戶端)的問題以後,.NET 跨平臺之旅邁出的重要一步。這個 ASP.NET Core 站點,既用了緩存,也有數據庫訪問操做,是一個典型的 Web 站點,若是它能持續穩定運行,將爲咱們全站遷移至 ASP.NET Core + Linux 掃清障礙。前端
這個 ASP.NET Core 站點用的 memcached 客戶端是咱們在 nuget.org 上最新發布的 EnyimMemcachedCore;數據庫
public void ConfigureServices(IServiceCollection services) { services.AddEnyimMemcached(options => options.AddServer("memcached", 11211)); }
.NET Core 用的是最新的 .NET Core 1.0.1;以 self-contained 方式部署,用 dotnet publish 命令發佈出來的文件中包含能夠直接在 Linux 上運行的可執行文件,所以服務器上無需另外安裝 .NET Core 運行環境,用 scp 命令將 dotnuet publish 命令生成的文件上傳到部署服務器便可。後端
"frameworks": { "netcoreapp1.0.1": { "imports": [ "dnxcore50", "portable-net45+win8" ], "dependencies": { "Microsoft.NETCore.App": "1.0.1" } } }
最前端用的是阿里雲負載均衡,後端 2 臺 Linux 服務器的配置是 1 核 CPU 與 1G 內存,Linux 發行版用的是 Ubuntu 14.04,使用 supervisor 以服務的方式運行站點。Web 服務器用的是 Kestrel,Kestrel 目前最大的問題是不支持主機名綁定,同一臺服務器上的不一樣站點必須綁定不一樣的端口,這給部署帶來了麻煩。數據庫服務器用的是阿里雲 RDS(SQL Server 2008 R2)。Memcached 緩存服務器用的是阿里云云數據庫 Memcache 版。緩存
Now listening on: http://*:8003 Application started. Press Ctrl+C to shut down.
接下來,咱們將一邊觀察已經運行在 ASP.NET Core + Linux 上的站點的運行狀況,一邊將更多項目遷移至 ASP.NET Core 。服務器