「システムに十分なバッファ領域がなかったか、キューがいっぱいだったため、ソケットでの操作を実行できませんでした」というエラーのため、アプリケーションのパフォーマンスの問題に直面しています。
基本的な申請の流れは、1.Web APIへの申請と、データベースへのWebAPIの申請です。
この問題を解決するには、
- maxport を 15000 まで増やしました - https://docs.microsoft.com/en-us/troubleshoot/windows-client/networking/connect-tcp-greater-than-5000-error-wsaenobufs-10055
- アプリケーション レベルですべての接続が閉じていることを確認しました。3.アプリケーションで「Using」キーワードを使用しています。4.確認したところ、Time_wait 状態の接続が非常に多くあります。
これ以外に解決策があれば教えてください。
コード
public IHttpActionResult Products([FromBody] ProductRequest productRequest)
{
if (productRequest != null)
{
var request = Mapper.Map<SolrProductRequest>(productRequest);
var response = _searchProxy.GetProducts(request);
return Ok(response);
}
return BadRequest();
}
public string Get(string relativeUrl, IEnumerable<KeyValuePair<string, string>> parameters)
{
var u = new UriBuilder(_serverUrl);
u.Path += relativeUrl;
var request = (HttpWebRequest)WebRequest.Create(u.Uri);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
var qs = string.Join("&", parameters
.Select(kv => string.Format("{0}={1}", HttpUtility.UrlEncode(kv.Key), HttpUtility.UrlEncode(kv.Value)))
.ToArray());
request.ContentLength = Encoding.UTF8.GetByteCount(qs);
request.ProtocolVersion = HttpVersion.Version11;
request.KeepAlive = true;
try
{
using (var postParams = request.GetRequestStream())
using (var sw = new StreamWriter(postParams))
sw.Write(qs);
using (var response = request.GetResponse())
using (var responseStream = response.GetResponseStream())
using (var sr = new StreamReader(responseStream, Encoding.UTF8, true))
{
var solrResult = sr.ReadToEnd();
//if (CustomValues != null && CustomValues.Count > 0)
//{
// PopulateCustomValues(solrResult);
//}
return solrResult;
}
}
catch (WebException e)
{
throw new SolrConnectionException(e);
}
}
ありがとう