Send Queue에 데이터가 물려있는 경우..

thisnome의 이미지

서버를 테스트 한다고, 패킷 제너레이터를 서버에 두대 붙여서 한쪽에서는 보내고(1번 클라이언트) 다른 한쪽은(2번 클라이언트) 받아서 통계를 내는 테스트를 하고 있습니다.

서버에서는 1번에서 TCP 코넥션을 받아서 인증절차등을 밟고, 2번으로 커넥션을 맺고 필요한 데이터는 2번에서 서버로 다시 서버에서 1번으로 보내줍니다.
모든 처리가 다 끊나면 1번에서 연결을 끊겠다는 의미의 데이터를 서버로 보내고, 서버는 2번으로 보내주고 양쪽 연결이 모두 종료되는것이 정상적인 루틴입니다.

초당100건 이상의 부하를 걸어 테스트를 하는 도중에 문제가 생겨서 netstat로 살펴보니 서버에서 2번 클라이언트로 연결을 끊겠다는 의미의 데이터크기인 29와 그다음 연결을 close했기때문에 보내주는 1, 합해서 30이 Send-Q에 걸려 있습니다. --> 이런놈들이 3000건 이상이고 상태는 FIN_WAIT1 입니다.

테스트는 반복적으로 일정수(3500)의 연결을 모두 붙였다, 끊었다, 다시 붙였다를 지속적으로 반복시켜주는 것이고, 빠르면 두세번에서, 늦을때는 수백번 반복후에 이렇게 거의 모든 연결이 netstat에서 FIN_WAIT1상태가 되는 현상이 생깁니다.

위에서 처럼 서버의 Send-Q에 30(release_data 29, close 1 (close로 1이 플러스 되었다는건 제 추측입니다.)) 이 쌓여 있다는건 보내주지 못한 서버쪽 문제라고 해야될까요 아니면 받지못한 클라이언트 문제일까요?

제 생각엔 아무래도 서버쪽 send queue에 남아있으면 결국 보내지 못한 서버쪽 문제라 볼 수 있다고 생각하는데, 이런 문제는 왜 생기고 어떻게 해결해야 하는지 궁금하기만 합니다.

문제의 원인들인 서버나, 클라이언트를 제가 작업한게 아니라 이런 현상만 갖고 질문하려니 좀 힘드네요.. ^^;

도움이 될만한 어떤 글이라도 환영합니다. 즐거운 하루 되세요.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.