[컴][swe] jmeter 결과 용어

 

제이미터 / 결과 / 용어/ jargon / glossary / 분석 / 읽는법

jmeter 결과 용어

  • Sample: 전체 sample 수
  • Average
    • ms 단위다.
    • average = 모든 sample 을 처리하는데 걸린 시간 / sample 수
  • Min: sample 에 의해 소요된 최소시간, ms 단위
  • Max: sample 에 의해 소요된 최대시간, ms 단위
  • Std. Dev(Standard Deviation) [ref. 3]
    • 낮을 수록 좋다.
    • 높은 표준편차는 응답시간의 차이가 많다는 이야기다. 그것은 응답시간이 갑자기 커지는 경우가 된다.(response time spikes)
  • Error % : error 가 발생한 request 의 비율
  • Throughput
    • unit time 당 output 인데 jmeter에서는 unit time당 ’서버에 가해진 request의 양’으로 보면 된다.
    • unit time 은 ‘second/minute/hour’ 가 있다. 기본적으로 보여지는 최소 비율이 1.0 이 되도록 unit time 이 선택된다.
    • csv 로 저장하면 requests/second 로 설정돼서 보여진다.
    • throughput = server에 보내진 request의 총 수 / 총 시간
  • Avg. Bytes : sample response 의 평균 size(bytes)

See Also

  1. Apache JMeter - Apache JMeter™
  2. JMeter Tutorial for Beginners - Complete Guide | ArtOfTesting

Reference

  1. Apache JMeter - User’s Manual: Component Reference
  2. Apache JMeter - User’s Manual: Glossary
  3. JMeter Result Analysis: The Ultimate Guide - OctoPerf

[컴][db] mongo db 의 auth 활성화 및 계정 생성

authentication enable 시키기 / 켜기 / 끄기 / 유저 생성 / 어드민 생성 / auth / create user account /몽고 계정 / 몽고 auth

mongo db 의 auth 활성화 및 계정 생성

목차

  1. admin 계정 생성
  2. mongodb 에서 auth 가 동작하도록 하기
  3. auth 를 enable 한 mongo db 에 접속하기
  4. 일반 유저 계정 생성
  5. user administrator 만드는 법
  6. user 수정 방법
  7. 모든 유저 목록 확인 방법
    1. built-in roles
  8. user 삭제 방법
  9. built-in roles
    1. 현재 만들어져 있는 role 확인방법

admin 계정 생성

  1. 처음에는 auth 가 없는 상태로 실행
  2. mongo db 에 접속
  3. admin database 에 가서 userAdminAnyDatabase 라는 role 을 가진 관리자 계정을 만든다.
    • userAdminAnyDatabase 라는 role 이 있으면, local, config db 를 제외한 모든 database 에서 user 와 role 을 만들고, 수정할 수 있다.
use admin
db.createUser(
  {
    user: "admin",
    pwd: "thisismypassword",
    roles: [{role: "userAdminAnyDatabase", db: "admin"}],
  }
)

아래처럼 admin database 에 admin 계정(user) 이 만들어졌다. 어느 database 에 내 account가 있는지도 알고 있어야 한다. 접속할때 필요하다.

use admin
db.getCollection("system.users").find({})
   .projection({})
   .sort({_id:-1})
   .limit(100)

result:

{
    "_id" : "admin.admin",
    "userId" : UUID("c87ab8bb-c2e3-45f1-b520-8d3c9d2b443e"),
    "user" : "admin",
    "db" : "admin",
    "credentials" : {
        "SCRAM-SHA-1" : {
            "iterationCount" : 10000,
            "salt" : "imiTMPzMuRLBMsLDYouRpg==",
            "storedKey" : "tfp58ai5BmtwCF+JLZk0d397o/Q=",
            "serverKey" : "bjsYcuSPeL5yg0umyLMsqSiem9Q="
        },
        "SCRAM-SHA-256" : {
            "iterationCount" : 15000,
            "salt" : "K0EYVz7W8GYA1AfWgfT1gQYGk1p/acUIP2Dtlw==",
            "storedKey" : "lCxXFEo+wpsPilU7ew5K/hSClewFYObOkf/nmf+Rk/g=",
            "serverKey" : "2WOC9EdHtuaOQTp6OjkJzOMDsggqEE6kce50W6BGS4I="
        }
    },
    "roles" : [
        {
            "role" : "userAdminAnyDatabase",
            "db" : "admin"
        }
    ]
}

mongodb 에서 auth 가 동작하도록 하기

이렇게 계정을 만들고 난후 --auth 를 사용하면 된다. --auth 를 사용하면 그때부터 mongodb 에 접속하면, 인증을 하고 사용해야 한다. (참고)

mongod --auth --port 27017 --dbpath /var/lib/mongodb

또는 configuration file 에 설정을 해줄 수도 있다.

# mongod.conf

...
#processManagement:

security:
  authorization: enabled
...

auth 를 enable 한 mongo db 에 접속하기

아래처럼 접속할 수도 있다. 다만 이경우 bash history 등에 남으니 주의해야 한다.

  • mongo "mongodb://admin:thisismypassword@localhost:27017/admin?authSource=admin"
  • mongo "mongodb://admin@localhost:27017/admin?authSource=admin"
c:\Program Files\MongoDB\Server\5.0\bin>mongo "mongodb://localhost:27017"
MongoDB shell version v5.0.2
connecting to: mongodb://localhost:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("c2b8347a-cbb9-43ac-9f93-3a97e3a02c20") }
MongoDB server version: 5.0.2
================
Warning: the "mongo" shell has been superseded by "mongosh",
which delivers improved usability and compatibility.The "mongo" shell has been deprecated and will be removed in
an upcoming release.
We recommend you begin using "mongosh".
For installation instructions, see
https://docs.mongodb.com/mongodb-shell/install/
================
> show databases;
> use anotherdb
switched to db anotherdb
> db.auth("admin")
Enter password:
Error: Authentication failed.
0
> use admin
switched to db admin
> db.auth("admin", "thisismypassword")
1

일반 유저 계정 생성

user 를 만들때는 특정 database로 가서 만들어야 한다.

이 user에 대한 credential 은 admin db 에 만들어지지만 이 db 가 갈 수 있는 기본 database 를 지정하는 느낌이라고 보면 된다. 그래서 user role을 부여할 때 다른 database 에 대한 권한을 추가로 줄 수 있다.(참고: How to Create New Users in MongoDB)

db.createUser(
    {
        user: "test1",          // user 이름
        pwd: passwordPrompt(),   // 여기에 암호를 직접 넣어도 된다.
        roles: [
            { role: "readWrite", db: "mytestdb2" }, // mytestdb2 에 대해 readWrite 권한
            { role: "read", db: "test" }            // test db 에 대해 read 권한
        ]
    }
)

user administrator 만드는 법

use admin
db.createUser(
  {
    user: "myUserAdmin",
    pwd: passwordPrompt(), // or cleartext password
    roles: [
      { role: "userAdminAnyDatabase", db: "admin" },
      { role: "readWriteAnyDatabase", db: "admin" }
    ]
  }
)

user 수정 방법

// permission 을 추가하는 법
use admin
db.grantRolesToUser(
   "myUserAdmin",
   {
     roles: [ 
       { role: "userAdminAnyDatabase", db: "admin" }, 
       { role: "dbAdminAnyDatabase", db: "admin" }, 
       { role: "readWriteAnyDatabase", db: "admin" } 
     ]
   }
)
// permission 을 삭제하는 법
use admin
db.revokeRolesFromUser(
   "myUserAdmin",
   [ { role: "userAdminAnyDatabase", db: "admin" },]
)

updateUser 를 이용하면 update를 한다. 그래서 기존의 role이 지워지고, 새롭게 set 된다.

use admin
db.updateUser(
   "myUserAdmin",
   {
     roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
   }
)
// pw 변경
use admin
db.updateUser("root", {pwd: "new-password" }) 

모든 유저 목록 확인 방법

db.getSiblingDB("admin").getCollection("system.users").find({})

user 삭제 방법

admin db 에 있는 myuser 라는 user 삭제

use admin
db.dropUser("myuser")

built-in roles

roles:

  • __queryableBackup
  • __system
  • backup
  • clusterAdmin
  • clusterManager
  • clusterMonitor
  • dbAdmin
  • dbAdminAnyDatabase
  • dbOwner
  • enableSharding
  • hostManager
  • read
  • readAnyDatabase
  • readWrite
  • readWriteAnyDatabase
  • restore
  • root : 이 녀석이 최고 권한이라고 보면 된다.
  • userAdmin
  • userAdminAnyDatabase

현재 만들어져 있는 role 확인방법

db.runCommand(
    {
      rolesInfo: 1,
      showPrivileges: true,
      showBuiltinRoles: true
    }
)

ip address 로 제한하기

192.168.0.2에서 접근한 user 만 인증해준다.

다만 주의할 것은 만약 local이 192.168.0.2인데 local에서 test 를 하려고 한다면, mongo mongodb://localhost 가 아니라 mongo mongodb://192.168.0.2 로 접근해야 된다. localhost 로 하면 auth 가 안된다.

use admin
db.createUser(
  {
    user: "admin",
    pwd: "thisismypassword",
    roles: [{role: "userAdminAnyDatabase", db: "admin"}],
    authenticationRestrictions: [
      clientSource: ['192.168.0.2'],
      // serverSource: ['192.168.0.2']
    ]
  }
)

serverSource 도 있다. 아래처럼 계정을 만들면, server의 ip 가 ’192.168.0.2’인 곳에서만 인증을 해주는 것이다. 참고로 serverSource: [] 은 어느서버에서도 인증을 안해주겠다가 된다.

use admin
db.createUser(
  {
    user: "admin",
    pwd: "thisismypassword",
    roles: [{role: "userAdminAnyDatabase", db: "admin"}],
    authenticationRestrictions: [
      serverSource: ['192.168.0.2']
    ]
  }
)

See Also

  1. 쿠…sal: [컴][db] mongodb 를 production 에서 배포시 확인할 사항

Reference

  1. MongoDB Authentication | MongoDB

[컴] AutoCAD 에 적합한 컴퓨터 사양

 

AutoCAD 에 적합한 사양 / 캐드에 좋은 성능 / 캐드에 맞는 pc사양 / 성능

AutoCAD 에 적합한 컴퓨터 사양

ref.1 에서 일단 아래 시스템 요구사항을 보라고 한다. 아래 경로로 가면, autocad 버전별 시스템사양을 확인할 수 있다. windows, mac 사양이 나와 있다.

성능에 영향을 주는 요소

  • 성능에 높은 영향을 주는 것은 ‘RAM’ 과 ‘그래픽 카드’ 라고 한다.
  • CPU
    • AutoCAD는 주로 하나의 코어를 사용한다. –> '코어 수'가 아니라 '코어 속도'(clock)가 가장 중요.
    • 평균 크기의 도면의 경우 3GHz 이상의 속도가 권장.
    • 모든 코어가 사용되는 유일한 시나리오는 렌더링 할때이다.
    • 렌더링은 2016년 버전 이후 AutoCAD는 모든 코어를 활용한다.
  • RAM
    • 64비트 시스템에는 거의 제한이 없다.
    • 시스템 요구 사항에 기재된 RAM보다 더 많은 RAM을 사용하여 성능을 향상시키는 것이 좋다.
    • 2D 도면의 경우 16GB가 좋고, 3D 도면의 경우 32GB로 충분.
    • 렌더링할 때 좀 더 필요할 수 있다.
  • 그래픽 카드
    • 인증 및 권장 그래픽 카드 사이트를 참조.
    • 드라이버도 직접 다운로드할 수 있다.
    • 경우에 따라서는 그래픽 카드 제조업체가 위 페이지에 추가 권장 사항을 게시할 수도 있다.

AutoCAD 2023 including Specialized Toolsets 에 대한 windows 시스템 요구사항

  • windows 10 64bit
  • CPU
    • 기본: 2.5~2.9 GHz(ARM 은 지원 안된다.)
    • 추천: 3+ GHz(기본), 4+GHz (터보)
  • 메모리
    • 기본: 8GB
    • 추천 : 16GB
  • 해상도
    • 1920x1080 True Color
    • 높은 해상도: 3840x2160
  • 그래픽카드
    • 기본: 1 GB, GPU 29 GB/s Bandwidth , DirectX 11 호환
    • 추천: 4 GB, GPU 106 GB/s Bandwidth , DirectX 12 호환
  • 저장공간
    • 10GB(SSD 추천)

Reference

[컴] AWS 인증서 validation email 재전송 방법

certificate / where is my certificate in aws / 이메일 인증 / 재전송 / 다시 보내는 법 / AWS Certificate Manager (ACM) / 다시 받는 법 / howto

AWS 인증서 validation email 재전송 방법

ACM 에 있는 인증서 확인

서울 region 의 certificate list 의 주소는 아래와 같다.

다음 그림처럼 리스트가 보인다. 여기서 원하는 인증서를 누르고 들어가면 된다.

인증 email 재전송

그러면 해당 인증서에 대한 정보가 뜬다.

여기서 2번째 섹션에 보면 ’Resend Validation email’이 있다. 이것을 눌러주면 된다.

email validation 을 DNS validation 으로 변경하려면 새롭게 만들어야 한다

글에 따르면, 새로운 certificate 을 만들라고 한다.

참고로, load balancer 와 같은 region 에 certificate 을 만들어야 하는 듯 하다. 다른 region 에 있는 certificate 은 load balancer 에서 설정할 때 보이지 않았다.

[컴][db] mongodb 에서 collection schema 만드는 query

몽고db /schema 얻기 / schema 몽고 / mongo schema 스키마 / aggregation 을 변수에 넣기 / how to assign aggregation result to the variable

mongodb 에서 collection schema 만드는 query

monogdb 에서는 js 로 query 를 작성하기 용이하다. 그래서 collection 에서 schema 를 출력해주는 query 를 만들어 봤다.

  • 가정: 모든 document 는 같은 schema 를 가지고 있다.
function _getType(coll, fieldName){
    
    var ret = coll.aggregate([
        {$limit: 1},
        { "$project": { 
            _id:0,
            "fieldType": {  "$type": `$${fieldName}` } 
        } }
    ]).toArray()[0]
    
    return ret
}

//------------------------------------
//
//  Main
//
//------------------------------------
// var colls = ["app",
//   "mycollection1",
//   "mycollection2",
// ]
var colls = db.getCollectionNames()

var curDB = db.getSiblingDB("test")

colls.map(function (collname, i){
  // get index
  var idxInfo = curDB[collname].getIndices()

  // get schema
  var schemaInfo = ''
  var schematodo = curDB[collname].findOne()
  var i = 0
  for (var key in schematodo) { 
    
    var ftype = _getType(curDB[collname], key)
    schemaInfo += `  ${key} : "${ftype['fieldType']}",\n`

  }

  // print
  print(`collection: "${collname}:"\nindex: ${JSON.stringify(idxInfo)}\nschema: {\n${schemaInfo}\n}`)
})

Reference

  1. Mongodb schema | How Schema works in Mongodb?
  2. Push query results into variable with MongoDB?

[컴][db] mongo db profiling

 

몽고 최적화 속도 / 확인 / slow query / slowquery/ 수집방법 / 프로파일러 / 최적화 / audit

mongo db profiling

profiler level

  • 0 : profile 가 off, data 수집을 안한다. default 값
  • 1 : 오래걸리는 operation 에 대해서만 수집, 기준은 slowms값보다 오래걸리는 operation 을 수집.
    만약 db.setProfilingLevel() filter option 이 걸려있다면, slowms, sampleRate 값은 무시하고 filter 에 맞는 값을 수집한다.
  • 2 : profiler 가 모든 operation 들에 대한 data 를 수집한다.
    • me: mongodb 가 enterprise 에서 audit 기능을 제공하는데, 이 기능으로 audit 기능의 일부로 사용할 수 있을 듯도 하다.
use mydb

// 현재 profile level 알아보기
db.getProfilingLevel()
db.getProfilingStatus()

// profile level 변경
db.setProfilingLevel(2)

db.system.profile.find().pretty()

최근 mongod event 보기

// code from NoSqlBooster
function showMongoLog({filter}){
    function getMostRecent1024MongodEventLog() {
        if (parseFloat(db.version()) < 3.0) throw new Error("Require MongoDB 3.0 or above")
        const logFilter = "global"; //possible value:  global|rs|startupWarnings
        const res = db.adminCommand({ getLog: logFilter });
    
        if (!res.ok) throw res;
        return res.log;
    }
    
    const logLines=getMostRecent1024MongodEventLog();

    const logEntries=mb.parseMongoDBLog(logLines)
        .filter(filter)
    
    return logEntries    
}

const filter=it => true
    //&& moment(it.timestamp).isBetween("2022-04-04 17:03","2022-04-05 17:03") //The match is exclusive.
    //&& /command.*aggregate/.test(it.message) //test message
    //&& (["Debug","Info","Warning","Error","Fatal"].indexOf(it.severity)>-1)  //severity
    //&& it.component==="COMMAND" //component, COMMAND,INDEX,QUERY,REPL,WRITE.  use db.getLogComponents() to get all
    && it.duration_ms >= 100
        
showMongoLog({filter})

mongod.conf 에 설정

operationProfiling:
   mode: <string> off|slowOp|all
   slowOpThresholdMs: <int>
   slowOpSampleRate: <double>
   filter: <string>

Reference

  1. db.setProfilingLevel() — MongoDB Manual
  2. Configuration File Options — MongoDB Manual

[컴] 구글 캘린더에서 공휴일만 표시하는 방법

캘린더에서 공휴일 제대로 표시하기 / 공휴일만 보이기 / 기념일 감추기 /한국 holiday / 한국휴일 제대로 표시

구글캘린더에서 공휴일만 표시하는 방법

  1. 캘린더
  2. 캘린더에서 ‘대한민국의 휴일’ 캘린더의 ‘옵션’ 메뉴 선택
  3. ‘설정’ 클릭
  4. ‘휴일 캘린더 콘텐츠’에서 ’공휴일만’ 으로 설정

screenshots