주요 콘텐츠로 건너뛰기

이 블로그에서 충분한 osl_server_processes 시작되었는지 확인하는 방법을 설명합니다. 향후 블로그에서는 max_open_servers 값이 환경에 적합한지 확인하는 방법에 대해 설명합니다.

OSL 서버수는 OSL을 사용하는 응용 프로그램의 성능의 주요 요소입니다!

충분한 osl_server 프로세스를 실행한다는 것은 무엇을 의미합니까? 즉, 트랜잭션이 다른 모듈 이나 시스템에서 도착하면 항상 유휴 상태이며 해당 트랜잭션을 처리할 수 있는 osl_server 항상 있습니다. 즉, 모든 osl_server 프로세스가 트랜잭션을 처리하는 시간이 없어야 합니다.

osl_server 프로세스는 첫 번째 프로세스로 마지막 으로 예약되므로 트랜잭션을 완료하는 마지막 osl_server 프로세스가 예약된 다음 프로세스입니다. 즉, 가장 빠른 time_last_run 모든 서버가 동시에 바빴던 마지막 시간입니다. 마지막 날이나 이틀에 시간이 있다면 더 많은 서버가 필요할 것입니다. 시스템이 부팅된 시점인 경우 그렇지 않을 수 있습니다. 중간에 아무것도 시간이 얼마나 오래 전에 그리고 OSL 둔화와 함께 살 수 있는 경우에 따라 판단 전화 는 때때로. 그림 1은 여러 osl_server 프로세스에 대해 time_last_run 표시하는 데 필요한 명령을 표시합니다.

as: 프로세스 -process_name osl_server1; time_last_run 일치; dump_pte
실행 되지 않는 프로세스를 사용 하 여.
현재 프로세스는 52, ptep 8D82E500, 감독관.system (osl_server1)
감독관을 위한 PTE 8D82E500 (osl_server1)
time_last_run: 00000000 01834C2E(09-07-20 15:36:51.31266)
as: 프로세스 -process_name osl_server2; time_last_run 일치; dump_pte
실행 되지 않는 프로세스를 사용 하 여.
현재 프로세스는 53, ptep 8D872000, 감독관.시스템 (osl_server2)
감독관을 위한 PTE 8D872000 (osl_server2)
time_last_run: 00000002 462972DC(09-07-22 08:54:17.46376)
as: 프로세스 -process_name osl_server3; time_last_run 일치; dump_pte
실행 되지 않는 프로세스를 사용 하 여.
현재 프로세스는 54, ptep 8D874000, 감독관.system (osl_server3)
감독관을 위한 PTE 8D874000 (osl_server3)
time_last_run: 00000000 0183947E(09-07-20 15:36:51.59513)
. . . .
as: 프로세스 -process_name osl_server6; time_last_run 일치; dump_pte
실행 되지 않는 프로세스를 사용 하 여.
현재 프로세스는 57, ptep 8D87B440, 감독관.system (osl_server6)
감독관을 위한 PTE 8D87B440 (osl_server6)
time_last_run: 00000000 01DBF96A(09-07-20 15:38:19.98936)
로:
그림 1 – time_last_run 표시

이 게시의 끝에 매크로 osl_server_times.cm는 osl_server_times 라는 파일을 만듭니다. (날짜) time_last_run 시간의 정렬 된 목록을 들고. 또한 터미널 창에 파일을 표시합니다. osl_server 프로세스의 이름이 osl_serverN 가정합니다. 그렇지 않은 경우 고유한 기본 이름을 제공할 수 있습니다. 프로세스에 모두 일치하는 기본 이름이 있다고 가정합니다. 처음 나열된 것은 모든 서버가 동시에 실행된 마지막 시간입니다.  로그인 시간은 프로세스가 시작된 시기를 알려줍니다. 일반적으로 시스템을 부팅할 때도 동시에 시작됩니다.

예제 1은 6개의 osl_server 프로세스가 실행되는 모듈을 보여 주습니다. 모든 6 시스템이 부팅 된 이후 몇 가지 사용을했다하지만 마지막 실행 시간을 기반으로 아마 부팅 하는 동안 복구와 관련이 있었다. 시스템이 부팅된 이후 이틀 동안 두 개의 프로세스만 사용되었습니다. 시간이 문제가 없는 한 시스템을 부팅하고 새 트랜잭션을 처리할 준비가 되어 있지 않으면 이 모듈에 더 많은 프로세스를 추가하지 않습니다.

osl_server_times.cm에서 실행 %phx_vos#m16 에서 09-07-22.15:27:10

time_last_run CPU 로그인 시간 프로세스
                                                       이름 번호
 09-07-20 15:36:51.31266 / 0.87 / 09-07-20 15:33:49 / osl_server1 / 52
 09-07-20 15:36:51.31484 / 1.32 / 09-07-20 15:33:50 / osl_server5 / 56
 09-07-20 15:36:51.59513 / 0.81 / 09-07-20 15:33:49 / osl_server3 / 54
 09-07-20 15:38:19.98936 / 2.51 / 09-07-20 15:33:50 / osl_server6 / 57
 09-07-22 08:54:17.46376 / 1.59 / 09-07-20 15:33:49 / osl_server2 / 53
 09-07-22 15:26:35.14511 / 2.77 / 09-07-20 15:33:49 / osl_server4 / 55
예 1 – 모든 프로세스에는 약간의 CPU 시간이 있지만 추가 할 필요가 없습니다.

예 2에서 모듈은 40 개의 osl_server 프로세스를 실행합니다. 모듈이 7개월 전에 부팅된 이래로 13번이 실행되지 않았기 때문에 다시 많은 프로세스가 실행됩니다.

osl_server_times.cm에서 실행 %XXXXX #m1 에서 11-03-21.15:33:01

time_last_run CPU 로그인 시간 프로세스
                                                       이름 번호
 10-08-01 07:45:02.68817 / 0.02 / 10-08-01 07:45:02 / osl_server1 / 84
 10-08-01 07:45:06.45556 / 0.00 / 10-08-01 07:45:06 / osl_server2 / 85
 10-08-01 07:45:10.47752 / 0.00 / 10-08-01 07:45:10 / osl_server3 / 86
 10-08-01 07:45:14.51074 / 0.00 / 10-08-01 07:45:14 / osl_server4 / 87
 10-08-01 07:45:18.53199 / 0.00 / 10-08-01 07:45:18 / osl_server5 / 89
 10-08-01 07:45:22.62286 / 0.01 / 10-08-01 07:45:22 / osl_server6 / 92
 10-08-01 07:45:26.67370 / 0.01 / 10-08-01 07:45:26 / osl_server7 / 93
 10-08-01 07:45:30.70518 / 0.00 / 10-08-01 07:45:30 / osl_server8 / 94
 10-08-01 07:45:38.26467 / 0.02 / 10-08-01 07:45:34 / osl_server9 / 95
 10-08-01 07:45:38.77099 / 0.01 / 10-08-01 07:45:38 / osl_server10 / 96
 10-08-01 07:45:42.80245 / 0.01 / 10-08-01 07:45:42 / osl_server11 / 97
 10-08-01 07:45:46.82534 / 0.00 / 10-08-01 07:45:46 / osl_server12 / 98
 10-08-01 07:45:50.85063 / 0.00 / 10-08-01 07:45:50 / osl_server13 / 99
 11-03-18 14:33:15.59938 / 9514.24 / 10-08-01 07:46:15 / osl_server19 / 105
 11-03-18 14:43:22.17904 / 30208.59 / 10-08-01 07:46:19 / osl_server20 / 106
 11-03-18 14:45:00.93608 / 19494.54 / 10-08-01 07:45:58 / osl_server15 / 101
 11-03-18 19:29:29:54.04067 / 37248.83 / 10-08-01 07:46:55 / osl_server25 / 111
 11-03-20 00:19:10.75480 / 28961.64 / 10-08-01 07:46:10 / osl_server18 / 104
 11-03-20 04:13:02.01803 / 667.23 / 10-08-01 07:45:54 / osl_server14 / 100
 11-03-20 07:51:16.66950 / 40151.59 / 10-08-01 07:46:51 / osl_server24 / 110
 11-03-20 08:10:21.71397 / 16944.88 / 10-08-01 07:46:02 / osl_server16 / 102
 11-03-20 08:12:03.16114 / 39066.37 / 10-08-01 07:46:23 / osl_server21 / 107
 11-03-20 08:12:56.92729 / 37474.92 / 10-08-01 07:46:31 / osl_server23 / 109
 11-03-20 08:12:56.94239 / 6425.76 / 10-08-01 07:46:06 / osl_server17 / 103
 11-03-20 08:12:59.07991 / 33316.21 / 10-08-01 07:46:27 / osl_server22 / 108
 11-03-20 08:13:03.05792 / 0.02 / 11-03-20 08:12:59 / osl_server26 / 2317
 11-03-20 08:13:16.25518 / 0.02 / 11-03-20 08:13:06 / osl_server28 / 2319
 11-03-20 08:13:16.25527 / 0.01 / 11-03-20 08:13:03 / osl_server27 / 2318
 11-03-20 08:13:21.60688 / 0.02 / 11-03-20 08:13:16 / osl_server30 / 2321
 11-03-20 08:19:09.81250 / 0.15 / 11-03-20 08:13:20 / osl_server31 / 2322
 11-03-20 08:50:04.73651 / 0.45 / 11-03-20 08:13:30 / osl_server33 / 2324
 11-03-20 21:02:04.17459 / 68.30 / 11-03-20 08:50:49 / osl_server39 / 2406
 11-03-21 15:20:20:20.30186 / 170.07 / 11-03-20 08:50:55 / osl_server40 / 2407
 11-03-21 15:32:56.10295 / 211.96 / 11-03-20 08:50:45 / osl_server38 / 2405
 11-03-21 15:32:56.10362 / 124.29 / 11-03-20 08:10 / osl_server29 / 2320
 11-03-21 15:32:59.99746 / 202.52 / 11-03-20 08:13:24 / osl_server32 / 2323
 11-03-21 15:33:01.02978 / 175.24 / 11-03-20 08:13:37 / osl_server35 / 2326
 11-03-21 15:33:01.35322 / 211.63 / 11-03-20 08:13:33 / osl_server34 / 2325
 11-03-21 15:33:01.38417 / 201.76 / 11-03-20 08:50:38 / osl_server36 / 2403
 11-03-21 15:33:01.46699 / 194.44 / 11-03-20 08:50:41 / osl_server37 / 2404
예 2 – 일부 프로세스는 부팅 이후 실행되지 않으며 추가 할 필요가 없습니다.

이 마지막 예제에서는 더 많은 osl_servers 필요한 경우를 보여 주습니다. 이 모듈은 20개의 서버를 실행하고 있으며 매크로가 실행된 시점으로부터 24시간 이내에 모두 사용되었습니다.

osl_server_times.cm에서 실행 %XXXXX #m11 에서 11-03-21.15:49:03

time_last_run CPU 로그인 시간 프로세스
                                                       이름 번호
 11-03-20 18:37:18.97851 / 3079.12 / 10-09-10 08:04:38 / osl_server / 56
 11-03-20 18:37:18.97999 / 5044.43 / 10-09-10 08:04:37 / osl_server / 48
 11-03-20 18:37:22.37568 / 2485.06 / 10-09-10 08:04:37 / osl_server / 51
 11-03-20 18:37:26.99446 / 3637.60 / 10-09-10 08:04:37 / osl_server / 52
 11-03-20 18:37:26.99464 / 3329.56 / 10-09-10 08:04:38 / osl_server / 62
 11-03-20 18:38:04.86495 / 3556.72 / 10-09-10 08:04:37 / osl_server / 54
 11-03-20 18:38:48.53218 / 2509.57 / 10-09-10 08:04:38 / osl_server / 63
 11-03-20 18:39:06.44256 / 3434.27 / 10-09-10 08:04:39 / osl_server / 67
 11-03-20 18:39:06.44291 / 4478.29 / 10-09-10 08:04:38 / osl_server / 64
 11-03-20 18:39:06.45211 / 2918.82 / 10-09-10 08:04:37 / osl_server / 49
 11-03-20 18:39:06.45213 / 3131.79 / 10-09-10 08:04:37 / osl_server / 53
 11-03-21 03:00:35.69830 / 2477.28 / 10-09-10 08:04:38 / osl_server / 58
 11-03-21 03:00:35.74118 / 3411.54 / 10-09-10 08:04:38 / osl_server / 59
 11-03-21 03:00:36.86657 / 3225.85 / 10-09-10 08:04:38 / osl_server / 61
 11-03-21 12:14:28.10003 / 2897.49 / 10-09-10 08:04:38 / osl_server / 60
 11-03-21 12:14:28.10185 / 3983.01 / 10-09-10 08:04:38 / osl_server / 57
 11-03-21 15:07:43.19355 / 2736.61 / 10-09-10 08:04:37 / osl_server / 50
 11-03-21 15:12:11.08222 / 2892.31 / 10-09-10 08:04:38 / osl_server / 66
 11-03-21 15:12:13.61254 / 4489.65 / 10-09-10 08:04:38 / osl_server / 65
 11-03-21 15:48:52.71038 / 3601.19 / 10-09-10 08:04:38 / osl_server / 55
예 3 – 더 많은 서버가 필요한 경우

두 구성 파일을 편집, 컴파일 및 설치하여 OSL 서버 수를 늘리거나 줄일 수 있습니다. 이러한 변경 사항은 다음 재부팅시 수행됩니다.  OSL 서버 수를 제어하는 튜닝 매개 변수는 new_modules.tin 및 new_backbone_systems.tin의 max_open_servers 값입니다. module_start_up max_open_servers 값을 사용하여 시작할 osl_server 프로세스 수를 계산합니다. 모듈이 브리지 모듈이 아닌 경우 2 * max_open_servers 시작합니다. 브리지 모듈인 경우 4 * max_open_servers 시작합니다.

ADDITIONAL_OSL_SERVERS 값을 module_start_up.cm로 설정하면 더 많은 osl_server 프로세스를 시작할 수 있으며 기본값은 max_open_servers 값입니다. 재부팅하지 않고도 명령줄에서 더 많은 프로세스를 시작할 수도 있습니다. 이 게시물의 끝에 있는 start_more_osl_servers.cm 매크로를 사용하면 더 많은 프로세스를 쉽게 시작할 수 있습니다.

당신이 실행하는 osl_server 프로세스가 너무 많은 경우 당신은 그들을 중지 할 수 있지만 당신이 그들을 필요로하는 경우 그들은 거기에없을 것입니다. 일반적으로 추가 osl_server 프로세스를 실행하는 것은 상당한 양의 리소스를 사용하지 않습니다. 그러나 추가 프로세스를 중지하려면 stop_process 명령을 사용해서는 안됩니다. osl_server 프로세스에는 현재 트랜잭션이 완료된 후 정상적으로 종료하도록 지시하는 스위치가 있습니다. stop_sw 라는 스위치는 짧고 -1로 설정해야 하며 그림 2를 참조하십시오.

as: 프로세스 -process_name osl_server1
실행 되지 않는 프로세스를 사용 하 여.
현재 프로세스는 52, ptep 8D82E500, 감독관.system (osl_server1)
로: set_word stop_sw -1
추가기에서
000730F4 0000 FFFF
로:
그림 2 – osl_server 프로세스 중지

프로세스가 현재 트랜잭션이 완료된 후에만 종료되므로 마지막 실행된 프로세스에서 설정해야 합니다.

& osl_server_times starts here
&
& osl_server_times.cm
& version 1.0 09-07-10
& version 1.1 09-07-17 check to make sure that the data is on the
&                      expected line of output, if not adjust down 1 line
&                      and correct parsing for process name
& version 1.2 09-07-20 added a parameter for matching the osl_server
&                      process name instead of assuming that the name
&                      will be osl_server
& version 1.3 10-06-23 added &echo so macro can be used as started
&                      process. Note be sure that the name of the started
&                      process does not match the name of the osl_server
&                      processes or macro will abort. For example,
&                      osl_serverN for the osl_server processes and
&                      osl_server_times for the process running this
&                      macro will cause the macro to abort.
& version 1.4 11-03-21 cleaned up some comments prior to publication
&
& Noah Davids Stratus CAC noah.davids@stratus.com
&
&
&begin_parameters
MATCH match_name:string,required,=osl_server
&end_parameters
&
&
&echo no_input_lines no_command_lines no_macro_lines
&
&set_string PD (process_dir)
&set_string PL &PD&>process_list
&set_string LR &PD&>last_run
&set_string LI &PD&>login
&set_string CPU &PD&>cpu
&
&set_string TABLE &PD&>osl_server_times
&
&
& Create a new file or write over an existing file
attach_default_output &TABLE&
detach_default_output
&
&
&attach_input
analyze_system
&
&
& build a file containing a list of all the osl_server processes
..attach_default_output &PL&
match &MATCH&; who
..detach_default_output
&
&
& The first line has an "as: " prompt before the output which has to be
& stripped. Also the process name is name is in () which gives the
& command processor problems since it thinks it is a command function
& so translate the ()s to []. Finally translate spaces to underscores so
& I don't have to keep using the quote command function.
&set LINECOUNT 1
&set_string LINE &+
   (ltrim (substr (translate &+
      (contents &PL& &LINECOUNT& -hold) '[]' '()') 4))
&set_string LINE (translate (quote &LINE&) '_' ' ')
&
&
& LOOP until we hit a line that is just the as: prompt
&while X&LINE&X ^= Xas:X
&
&
& The first space will delimit the process number
&set I (calc (index &LINE& '_') - 1)
&set PROCESS (substr &LINE& 1 &I&)
&
&
& Look for the [] characters, everything between them is the process name
&set I (calc (index &LINE& '[') + 1)
&set J (calc (index &LINE& ']') - &I&)
&set_string NAME (substr &LINE& &I& &J&)
&
&
& create a temporary file and put the output of the analyze_system
& request dump_pte in it. We match on time_last_run so there is only a
& few lines in the output file
..attach_default_output &LR&&PROCESS&
process &PROCESS&
match 'time_last_run' ; dump_pte
..detach_default_output
&
&
..attach_default_output &LI&&PROCESS&
match 'login' ; dump_pte
..detach_default_output
&
&
..attach_default_output &CPU&&PROCESS&
match 'cpu_time:' ; dump_pte
..detach_default_output
&
&
& The time is in line 4. Even though the time is in ()s we don't have
& to translate because we are going to extract out the time before the
& command processor has a chance to get confused
&if (substr (contents &LR&&PROCESS& 4) 2 4) = 'time'
&then &set_string LRTIME (substr (contents &LR&&PROCESS& 4) 45 23)
&else &do
&set_string LRTIME (substr (contents &LR&&PROCESS& 5) 45 23)
..display_line
..display_line process &PROCESS& last run shifted by 1 line
&end
&
&
& Now get the login time
&if (substr (contents &LI&&PROCESS& 2) 2 5) = 'login'
&then &set_string LITIME (substr (contents &LI&&PROCESS& 2) 36 17)
&else &do
&set_string LITIME (substr (contents &LI&&PROCESS& 3) 36 17)
..display_line
..display_line process &PROCESS& login time shifted by 1 line
&end
&
&
& Finally get the CPU time
&if (substr (contents &CPU&&PROCESS& 2) 2 3) = 'cpu'
&then &set_string CPUTIME (translate &+
        (contents &CPU&&PROCESS& 2) '[]' '()')
&else &do
&set_string CPUTIME (translate &+
        (contents &CPU&&PROCESS& 3) '[]' '()')
..display_line
..display_line process &PROCESS& cpu time shiffed by 1 line
&end
&set_string CPUTIME (translate (quote &CPUTIME&) '_' ' ')
&set I (calc (index &CPUTIME& '[') + 1)
&set_string CPUTIME (substr &CPUTIME& &I&)
&set I (calc (index &CPUTIME& '_') - 1)
&set_string CPUTIME (substr &CPUTIME& 1 &I&)
&
&
& Now add a line to our table time - process name - process number
..attach_default_output &TABLE& -append
..display_line &LRTIME& / &CPUTIME& / &LITIME& / &NAME& / &PROCESS&
..detach_default_output
&
&
& increment the line count, read another line from the process list and
& translate the ()'s and spaces
&set LINECOUNT (calc &LINECOUNT& + 1)
&set_string LINE (translate (contents &PL& &LINECOUNT& -hold) '[]' '()')
&set_string LINE (translate (quote &LINE&) '_' ' ')
&end
&
&
& exit analyze_system
quit
&
&
& The table has a bunch of lines that are nothing but as: prompts. The
& sort -duplicate_path gets rid of all but the first as: line and also
& sorts the rest of the lines so that the process last run longest ago
& is first.
sort &TABLE& -duplicates_path &PD&>extra
&
&
& use line_edit to remove the as: prompt from the table and also add
& column headers
&set_string H &+
   osl_server_times.cm run on (current_module) at (date).(time)
&attach_input
line_edit &TABLE& -no_keystrokes -no_backup -no_verbose
insert
         &H&

      time_last_run        CPU       login time           process
                                                       name    number
.
change * !as:  ! ! *
write
quit
&detach_input
&
&
& copy the table out of the process_dir and into the current dir.
&set_string DT (date)
copy_file &TABLE& osl_server_times.&DT& -delete
display_file osl_server_times.&DT&
&
& osl_server_times ends here
그림 3 – osl_server_times.cm
& start_more_osl_servers starts here
&
& start_more_osl_servers.cm
& version 1.0 09-07-21
&
& Noah Davids Stratus CAC noah.davids@stratus.com
&
&
&begin_parameters
BASE base_name:string,required,=osl_server
START starting_index:number,required
END   ending_index:number,required
&end_parameters
&
&
&  ********** If this is a bridge module, the -super switch should be
&  ********** given to each osl_server process.
&  ********** Redirect the output of the osl_admin request to a temp file
&
attach_default_output (process_dir)>foo
osl_admin -quit -request_line 'get i_am_bridge'
&set bridge (command_status)
detach_default_output
&
&if &bridge& ^= 0
&then &set OPTS (string -super -syserr)
&else &set OPTS (string -syserr)
&
&
&  **********  Use a loop to start the desired number of servers.
&
&set COUNT &START&
&label LOOP
&
&set OUT &BASE&&COUNT&.out
&set CMD (string osl_server &$OPTS& -server_suffix &COUNT&)
&
&
&  ********** If it exists, save the old output file.
&
&if (exists &OUT&) ^= 0
&then !rename -delete &OUT& *.old
&
&
&  ********** Create a new output file and turn on implicit locking. This
&  ********** will allow the file to be displayed while the osl_server is
&  ********** still running.
&
!create_file &OUT&
!set_implicit_locking &OUT& on
!start_process &$CMD& -privileged -output_path &OUT& -priority 9 &+
   -process_name &BASE&&COUNT&
&
&
&  ********** Loop back around until enough osl_server processes have
&  ********** been started.
&
&set COUNT &COUNT& + 1
&
&if &COUNT& <= &END&
&then &goto LOOP
&
&
& start_more_osl_servers ends here
그림 4 – start_more_osl_servers.cm