fork 시 mysql 연결도 복사 될까요?

MyAbby의 이미지

posix 라이브러리(리눅스) 에서 fork는 거의 모든 걸 자식 프로세스에 복사한다 하는데...

mysql c api 를 사용해서 접속한 연결도 그대로 자식이 쓸 수 있나요?

x

익명 사용자의 이미지

해보기 어려문 문제도 아니고 fork해서 쿼리가 실행되는지 확인만 해보면 되는걸 질문하는 이유는 뭔가요?
시도해보고 해결하기 어려울 때 질문을 하시면 답변 다시는 분들이 더 친절하게 답변해 드릴겁니다.

jick의 이미지

이런 문제는 "fork해서 쿼리가 실행되는지" 확인해 본다고 끝나는 문제가 아닙니다.

당연한 얘기지만 이런 종류의 문제는 "프로그램을 잘못짰다고 결과가 잘못 나온다는" 보장이 없습니다. 매뉴얼에 "이런 거 보장 안되니 절대로 하지마라"라고 적혀있는데 해봤더니 되는 케이스도 얼마든지 가능하다는 거죠. (물론 그렇다고 되는 줄 알고 쓰다가는 마지막 순간 고객 앞에서 뻑납니다.)

그러니까 이런 문제는 매뉴얼을 확인해서 되는지 안되는지 확실히 하고 넘어가야지 "되나 안되나 해보자"는 매우 위험합니다.

익명 사용자의 이미지

익명이면 비평해도 되는거죠?

ㅡㅡ mysql 메뉴얼에도 안나와있는 부분이여서 주관적인 자문을 얻자는 건데 뭐가 마음에 안들어서 그러세요?
욕만 안하셨지 상대 기분 해치는 겁니다. 아님 그 방식으로 계속 코딩하는 코더가 혼자 되시지 왜 다른사람까지 끌어들여?

익명 사용자의 이미지

해보지 않아서 질문에 대한 답은 잘 모르겠지만..

관리 측면에서나 소스코드 이해면으로 볼 때 fork로 생성된 프로세스 새로 맺고 쓰게 하는게 좋지 않을까 싶습니다.

ssehoony의 이미지

mysql api 내부 구조를 모르기 때문에 상상을 해보자면...
아마도 api 내부에 네트워크 통신을 위해 소켓이 하나 열려 있을텐데요.
소켓의 경우 fork 를 하게 되면, 같은 소켓을 두개의 프로세스가 공유하게 됩니다. (완전히 새로운 소켓이 생성 복사 되는게 아니에요)
그래서 두 프로세스중에 하나에서 소켓을 close하면 다른 프로세스의 소켓도 close 됩니다.
또한 소켓에 데이터가 수신되면, 두 프로세스 모두에 수신 이벤트가 발생합니다. (이런 특징을 이용해 pre-fork 방식의 네트워크 서버 개발이 가능하죠. 또한 이런 특징때문에 "thundering herd problem"이라는 것도 발생합니다.)
두 프로세스에서 수신된 데이터를 서로 읽으려고 하다가 데이터가 꼬이게 될 것 같네요.

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.