"동시 접속을 막고 싶다" 는 요구는 실제로는 세 가지 서로 다른 층에서 갈린다. 어느 층을 손볼지 정하지 않고 시작하면 설정을 넣어도 기대한 대로 막히지 않는다.
SAS 9.4 의 사용 권한은 SETINIT(SID) 에 기록되고, 현재 적용된 내용은 다음으로 확인한다.
proc setinit;
run;
로그에 제품 목록과 만료일이 찍힌다. 동시 사용자 수 제한이 계약에 포함돼 있으면 그 수를 넘는 세션은 SAS 쪽에서 거부한다. 이 값은 설정 파일로 바꿀 수 있는 것이 아니라 SID 파일을 새로 받아야 바뀐다. 갱신 절차는 SAS 9.4 라이선스 갱신 을 본다.
Workspace Server 는 클라이언트(Enterprise Guide, DI Studio, SAS Add-In 등)가 붙을 때마다 Object Spawner 가 새로 띄운다. 따라서 "동시에 몇 개까지 띄울지" 는 Spawner 와 논리 서버 정의에서 정한다.
SAS Management Console 에서 다음 경로를 연다.
Server Manager -> SASApp -> SASApp - Workspace Server -> Properties -> Options
여기서 Advanced Options 의 부하 관련 항목으로 서버당 최대 클라이언트 수를 정한다. 항목 이름과 적용 범위는 릴리스와 논리 서버 종류(Workspace / Stored Process / Pooled Workspace)마다 다르므로 실제 화면에서 확인한다 (확인 필요).
Pooled Workspace Server 를 쓰는 구성이라면 풀 크기가 곧 동시 실행 상한이 된다. 풀을 넘는 요청은 대기하거나 거부된다.
설정을 바꾼 뒤에는 Object Spawner 를 재기동해야 반영된다.
/opt/sas/config/Lev1/ObjectSpawner/ObjectSpawner.sh restart
세션 수를 세는 방식이 아니라 "누가 붙을 수 있는지" 로 좁히는 방법이다. 논리 서버 객체의 ACT 에서 특정 그룹에만 접근을 허용하면 그 밖의 계정은 애초에 서버를 볼 수 없다. 사람 수가 고정된 운영 환경에서 가장 다루기 쉽다.
계정 단위로 동시 프로세스 수를 묶는다. Workspace Server 는 접속자 계정으로 뜨므로 계정별 제한이 그대로 세션 제한이 된다.
sudo vi /etc/security/limits.d/90-sas.conf
sasuser1 hard maxlogins 2
sasuser1 hard nproc 256
maxlogins 는 PAM 로그인 세션만 세므로 Spawner 가 띄우는 프로세스에는 걸리지 않을 수 있다. 실제로 막히는지 반드시 시험 계정으로 확인한다. 자세한 설정 방식은 ulimit 편집 을 본다.
현재 떠 있는 Workspace Server 프로세스를 세면 실제 동시 세션 수가 나온다.
ps -ef | grep -c "[s]asexe\|[w]orkspaceserver"
Object Spawner 로그에서 거부된 요청을 확인한다.
tail -f /opt/sas/config/Lev1/ObjectSpawner/logs/ObjectSpawner_*.log
Object Spawner 의 세션 상한 옵션은 릴리스에 따라 화면 항목 이름이 달라 대화 기록만으로는 확정하지 못했다. 운영 중인 릴리스의 SAS Intelligence Platform Application Server Administration Guide 에서 해당 항목을 확인한 뒤 이 문서를 보완한다.