하나 이상의 작업을 동시에 실행하는 작업 서버를 작성했습니다 (또는 동시에 시스템의 CPU 수에 따라 다름). 생성 된 많은 작업은 SQL Server 데이터베이스에 연결하고 쿼리를 수행하고 결과를 가져와 결과를 CSV 파일에 작성합니다. 이러한 유형의 작업의 경우, pyodbc
및 Linux 용 Microsoft SQL Server ODBC 드라이버 1.0을 사용하여 쿼리를 실행 한 다음 연결을 끊습니다.Linux 용 MS ODBC 드라이버 1.0을 사용하는 Linux에서 pyodbc를 사용하여 SQL Server 데이터베이스에 다시 연결할 때 세그먼트 오류가 발생했습니다.
각 작업은 파이썬 다중 처리 모듈을 사용하여 별도의 프로세스로 실행됩니다. 작업 서버 자체는 두 갈래의 백그라운드 프로세스로 시작됩니다.
오늘 첫 번째 SQL Server 작업이 정상적으로 실행되었지만 두 번째 SQL Server 작업이 멈추는 것처럼 보였을 때까지이 모든 것이 잘 돌아갔습니다 (즉, 영원히 계속 실행중인 것처럼 보입니다).
[[email protected] jobserver]# python
Python 2.6.6 (r266:84292, Dec 7 2011, 20:48:22)
[GCC 4.4.6 20110731 (Red Hat 4.4.6-3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
import pyodbc
conn = pyodbc.connect('DRIVER={SQL Server Native Client 11.0};SERVER=MY-DATABASE-SERVER;DATABASE=MY-DATABASE;UID=MY-ID;PWD=MY-PASSWORD')
c = conn.cursor()
c.execute('select * from my_table')
<pyodbc.Cursor object at 0x1d373f0>
r = c.fetchall()
len(r)
19012
c.close()
conn.close()
conn = pyodbc.connect('DRIVER={SQL Server Native Client 11.0};SERVER=MY-DATABASE-SERVER;DATABASE=MY-DATABASE;UID=MY-ID;PWD=MY-PASSWORD')
Segmentation fault
그래서 당신이 볼 수있는 데이터베이스에 처음 연결이 잘하지만 후속 작업 :이 두 번째 작업 과정을주의 추가 조사에
다음과 같이 내가 수동 테스트를 실행 좀비가가되었다 세그먼테이션 결함으로 실패 연결을 시도합니다.
나는 왜 이런 일이 일어나기 시작했는지 해결책을 찾지 못했습니다. 오늘 전에는 문제가 없었고 코드도 변경되지 않았습니다.
이 문제에 대한 도움을 주시면 감사하겠습니다.