2017年3月

提高WebRequest方法的并发限制

在C#中,WebRequest方法和WebClient方法,在多线程时,对并发请求数量有一个默认限制,这个限制与操作系统相关,在Windows XP/Windows 7等PC系统上默认为2个,而在Windows 2008等服务器系统中,默认为10个,也就是说在出现高并发的环境中,使用WebRequest方法来进行POST或GET请求时,最多只能同时发送10个,剩下的都在排队。出现这个问题的原因是,在HTTP 1.0和HTTP 1.1规定最大连接数就是2,就一直延用到现在。
解决方法:
在程序中设置:

System.Net.ServicePointManager.DefaultConnectionLimit = 512;  //建议最高不要超过1024,具体看使用环境是否需要

或者在配置中设置:

<configuration>
    <system.net>
        <connectionManagement>
            <add address = "http://www.google.com" maxconnection = "512" ></add>
            <add address = "*" maxconnection = "512" ></add>
        </connectionManagement>
    </system.net>
</configuration>

以上。

Visual Studio 2017 问题集锦

前几天微软发布Visual Studio 2017 RC版,第一时间下载安装并体验了一番,把我之前在Visual Studio 2015下面写的IP高精度定位网站升级到VS2017项目,在此期间遇到了点问题,就在这里开一篇文件,来统一写一下在使用2017的过程中遇到的问题及解决方法吧,该文章不定期的更新。

以下问题是在.Net Core项目下出现的+++
1.类库的改变
在使用VS2015写.net core项目的时候,如果要新建类库,可以直接建.Net Core类库,之后在其他项目下调用,而在VS2017下,可能需要创建的是.Net Standard类型的类库,才能在其他项目中进行调用。
2.创建控制器报错
在创建新的控制器的时候,可能会出现如下错误:

“No executable found matching command "dotnet-aspnet-codegenerator"”

如下图所示:

此时,打开网站项目下的.csproj文件,添加如下代码:

  <ItemGroup>
        <DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="1.0.0-msbuild3-final" />
  </ItemGroup>

之后再添加控制器就可以了。

3.项目迁移升级时报错
项目从2015升级到2017时,报下面的错误:

No executable found matching command "dotnet-migrate"

只要卸载之前的Microsoft .NET Core 1.0.1 的SDK,重新安装.NET Core 1.1.1 的SDK就可以了

以上。

Windows Server 2008 R2 让IIS支持高并发

IIS的默认设置只能支持很小的访问量,访问量大了(比如每秒几千)就会不响应,可以通过下面的设置使IIS支持高并发访问

1.调整IIS应用程序池队列长度:

IIS管理——>应用程序池——高级设置
队列长度:65535

2.调整IIS的appConcurrentRequestLimit设置
默认值为5000,修改为10万
在cmd中执行下面语句

c:\windows\system32\inetsrv\appcmd.exe set config /section:serverRuntime /appConcurrentRequestLimit:100000

之后可以在%systemroot%\System32\inetsrv\config\applicationHost.config中查看到该设置:

<serverRuntime appConcurrentRequestLimit="100000" /> 

3.调整machine.config中的processModel>requestQueueLimit的设置
默认值5000,修改为10万

<configuration>
    <system.web>
        <processModel enable="true" requestQueueLimit="100000"/>

4.修改注册表,调整IIS 7支持的同时TCPIP连接数
默认值5000,修改为10万

reg add HKLM\System\CurrentControlSet\Services\HTTP\Parameters /v MaxConnections /t REG_DWORD /d 100000 

5.重启服务使生效

net stop http  & net start  http & iisreset

SQL Server on Linux 初体验

最近才无意中发现,原来微软已经在去年(2016年)的3月8日(一个特殊的日子)发布了SQL Server on Linux 版本,已经过去一年多了,我竟然才知道,真是大意了。无论怎样,还是先大概的试一下吧,至少先把数据库安装上看看长什么样子的吧。
先说下安装的前提条件:

1.CentOS(没提版本,最好是7.0以上吧,不确定6.x及以下的可不可以)、ubuntu 16.04或ubuntu 16.10,或docker等
2.要求内存最低3.25G
3.如果没有突发内存(即swap分区),不能安装,如部分不带swap分区的VPS就不能安装SQL Server

整体来说要求很高,下面开始安装体验。
之前看过其他的文章,说需要openssl 1.0.2以上版本,实际测试过程中发现并不需要;另外安装过程大概需要几分钟至几十分钟时间不等,取决于你的网络状态,下载服务器位于国外,会比较慢,最好是在screen下安装。我是在CentOS 7.1环境下安装的,下面简单说下安装过程:
1.添加centos的SQL Server源的配置文件:

curl https://packages.microsoft.com/config/rhel/7/mssql-server.repo > /etc/yum.repos.d/mssql-server.repo

2.使用yum安装SQL Server:

yum install -y mssql-server

3.配置数据库:

/opt/mssql/bin/mssql-conf setup

之后设置数据库sa账号的密码,要满足一定的复杂度,一般大小写英文+数字+特殊符号,长度8位以上,都可以满足。
4.查看数据库状态:

systemctl status mssql-server

5.设置防火墙,把1433端口添加到例外:

firewall-cmd --zone=public --add-port=1433/tcp --permanent
firewall-cmd --reload

6.更新:

yum update mssql-server

7.卸载:

yum remove mssql-server

卸载之后删除数据库文件:

rm -rf /var/opt/mssql/

到这里数据库部分就安装完了,下面可以安装可选包:

一、安装SQL Server工具包:
1.安装
如果工具包是在其他Linux服务器上安装,需要先添加源:

curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/msprod.repo

之后安装:

yum install mssql-tools unixODBC-devel

2.更新:

yum check-update
yum update mssql-tools

二、安装全文检索:
1.安装:

yum install -y mssql-server-fts

2.更新:

yum check-update
yum update mssql-server-fts

以上过程完毕后,我们的数据库就彻底安装完了,下面是使用。
Linux下:
1.连接数据库:
需要安装SQL命令行工具,具体包含在前面安装的SQL可选工具包中,如果你已经安装了,那么使用下面的命令连接:

sqlcmd -S localhost -U SA -P '你的SA账号的密码'

2.查询可用的数据库:

SELECT Name from sys.Databases;
GO

3.创建数据库:

CREATE DATABASE testdb;
GO

4.选择指定的数据库:

USE testdb;
GO

5.建表:

CREATE TABLE inventory (id INT, name NVARCHAR(50), quantity INT);
GO

6.向表中插入数据:

INSERT INTO inventory VALUES (1, 'banana', 150);
INSERT INTO inventory VALUES (2, 'orange', 154);
GO

7.查询:

SELECT * FROM inventory WHERE quantity > 152;
GO

8.退出SQL命令行:

QUIT

Windows下连接:
可以使用SQL Server Management Studio (SSMS)、PowerShell和SQL Server Data Tools (SSDT)。
使用SQL Server Management Studio的话,需要安装新版本:https://go.microsoft.com/fwlink/?linkid=840957,之后使用方法与Windows下的一致。

以上。

分类

最新文章

最近回复

  • 老徐: 已经加上了,抱歉才看到
  • 青山: 某种原因,暂停友链,抱歉。
  • 搬瓦工: 朋友 交换链接吗
  • 飞刀说: 名称:飞刀说 描述:...
  • 青山: 计划搬迁到腾讯云,正...
  • 河边的飞刀: 网站名称:飞刀说 网...
  • 老徐: 具体要哪个呢?
  • 老徐: 是不是有点老?
  • 青山: 哇,林志炫
  • 老白: 哇,这改的可以,能不...

归档

标签云

C# .net core asp.net 情感 SQL mongodb sql server EasyUI 安全 激活 linux 身份验证 https typecho .net sql注入 kms MVC IIS 高并发 IE 坑爹 服务器 mysql Oracle Combobox Datagrid 口语 数据抓取

其它