.wgetrc にプロキシの設定を行う
{code}
export HTTP_PROXY=
export HTTPS_PROXY=
export FTP_PROXY=
export http_proxy=
export https_proxy=
export ftp_proxy=
{/code}
なるほど、しばらく触ってなくて馬鹿になってた…
ソフトウェアエンジニアの技術ブログ:Software engineer tech blog
随机应变 ABCR: Always Be Coding and Rust : хороший
.wgetrc にプロキシの設定を行う
{code}
export HTTP_PROXY=
export HTTPS_PROXY=
export FTP_PROXY=
export http_proxy=
export https_proxy=
export ftp_proxy=
{/code}
なるほど、しばらく触ってなくて馬鹿になってた…
負荷テストツールには、Apache Bench, Apache JMeter, Locust, Tsung, Gatling, Vegetaなどがある。
Apache BentchとVegetaはシナリオテストができない。
### 負荷テストのアプローチ
– 性能テスト: システムが想定している負荷に対し、どの程度のスループットやレイテンシかを確認
– 限界テスト: 処理限界に近い、または超過した負荷に対し、エラーが出るかなど挙動を確認
– 耐久テスト: 長時間負荷をかけた際の挙動を確認
計画書作成、スペックを変更、ダミーデータ作成、負荷テストと負荷テストツールの作成、単一エンドポイントに対するテスト、オートスケールを有効にした場合のテスト、シナリオテスト、耐久テスト
スループットの限界値を見つけるために、同時にアクセスするユーザ数を徐々に上げていく
なるほど、かなり奥が深い
vstat: システム全体の負荷
top: CPU, メモリを食っているプロセスの特定
sar: 過去の負荷の履歴
mpstat -P ALL 1: CPUコアごとの負荷
dstat -taf 標準でインストールされているコマンド
free -m メモリ
iostat -dmxt 1: IO状況
CPU使用率は $ vmstat で 100 – id の値
$ vmstat
procs ———–memory———- —swap– —–io—- -system– ——cpu—–
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 2193996 89188 931568 0 0 4835 383 460 846 9 10 80 1 0
free, buff, cacheが少ないと問題
us, syがカーネル、カーネル以外のCPU使用率
$ top
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
726 root 20 0 874552 38992 20220 S 12.5 1.0 0:01.93 snapd
1 root 20 0 105056 12924 8252 S 0.0 0.3 0:02.41 systemd
$ sudo apt install dstat
$ dstat -taf
Terminal width too small, trimming output.
—-system—- –total-cpu-usage– -net/enp0s3–net/enp0s8 —paging–>
time |usr sys idl wai stl| recv send: recv send| in out >
17-08 06:52:38| 2 1 96 0 0| 0 0 : 0 0 | 0 0 >
17-08 06:52:39| 0 0 100 0 0| 180B 534B: 0 0 | 0 0 >
17-08 06:52:40| 0 1 97 2 0| 120B 220B: 0 0 | 0 0 >
17-08 06:52:41| 0 0 100 0 0| 120B 204B: 0 0 | 0 0 >^
cpu負荷をコアごと、IO負荷をディスクごと、ネットワーク転送量をインターフェイスごとに表示
https://qiita.com/aosho235/items/c4d6995743dd1dac16e1
入力元として取ると乱数が返ってくるファイル
適当な値を取るときに使う
$ head -c 200m /dev/urandom > test.txt
$ cat test.txt
?x??y??Q%s}?Gz?¯???$?_?g7T!L??+\?*???f>?$????Q?7?????i%?M??X???? BY?P??”?gO?%??O??/??j?n??7??dnZ?
?
r????u??/???,O @ep?????>?;??’y?l?]?\e-).??Ѳ
なんかバグのようなファイルが生成される
RedHatLinuxのために開発されたパッケージ管理方法
標準のファイル拡張子は.rpm
複数のファイルやディレクトリをcpio形式のアーカイブファイルにまとめた形になっている
独自のspec形式ファイル、バイナリファイルやソースコードなどが格納されている
パッケージ名称、説明、種類、バージョン番号、ライセンス情報、開発元、公式サイトのURL、ツール、他のパッケージとの依存関係などの情報を記述した部分と、シェルスクリプトなどを記述したスクリプト部分が格納
apr rpmはapache
apr-util は依存関係
httpd rpm
libfontenc rpm
libXfont rpm
xorg-x11 rpm : x window system
うーむ、DMZのapache設定がわからん…
(13)Permission denied: AH00072: make_sock: could not bind to address [::]:20080
(13)Permission denied: AH00072: make_sock: could not bind to address 0.0.0.0:20080
SELinuxとは? : 強制アクセス制御を実現するセキュリティ機構
Security-Enhanced-Linux
アクセス制御に使う
$ getenforce
Enforcing
$ sestatus
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: enforcing
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Memory protection checking: actual (secure)
Max kernel policy version: 33
### 一時的に無効化
$ sudo setenforce 0
$ getenforce
Permissive
### 恒久的に無効化
$ sudo cp -piv /etc/selinux/config /etc/selinux/config.`date “+%Y%m%d”`
$ sudo vi /etc/selinux/config
# SELINUX=enforcing SELINUX=disabled
$ sudo systemctl restart httpd
$ systemctl status httpd.service
なるほど
ディレクトリ: /etc/systemd/system/*.service
[Unit] Description=Load dump capture kernel After=local-fs.target [Service] Type=oneshot ExecStart=/opt/bin/run-kexect.sh RemainAfterExit=yes [Install] WantedBy=multi-user.target
Unit, Service, Installのセクションから成り立ち、Unit, Installは共通的な設定内容、Serviceはサービスを実行するため
### Unitセクション
Description: ユニットの説明
After/Bifore: 指定したユニットの実行順番。Afiter=bar.serviceの場合、bar.serviceのstart-up処理が終わるまで実行しない
Requires/Wants: ユニットの依存関係の定義 Wants=bar.service など
その他: man 5 systemd.unit
### Serviceセクション
Type: Typeには以下の5つがあり、設定がなければsimpleがデフォルトで使用される
L simple, forking, oneshot, notify, dbus
ExecStart: 実行するコマンドラインを書く
RemainAfterExit: typeがoneshotの場合は、コマンド実行後もステータスをアクティブにする
### Installセクション
WantedBy/RequiredBy: systemctl enable xxxでユニットをenableした時に、.wants, .requiredにシンボリックリンクを作る
/etc/systemd/system/multi-user.target.wants/
なるほど
$ less /etc/passwd
vagrant:x:1000:1000::/home/vagrant:/bin/bash
ken:x:500:100::/home/ken:/bin/bash
ユーザ名: ken
パスワード: x
ユーザID: 500
グループID: 100
コメント:
ホームディレクトリ: /home/vagrant
ユーザが利用するシェル: /bin/bash
$ sudo useradd -u 2000 -g 2000 -m -s /bin/bash hpscript
-m は ユーザ名でホームディレクトリを作成
$ cat /etc/passwd
パスワード付与
$ sudo passwd hpscript
なるほどー 理解した
Linuxでは複数のユーザが使用することを想定しているため、グループを作って、一括でまとめて管理できるようにしている。
### グループ一覧の確認
$ cat /etc/group
e.g.
linuxacademy:x:1001:student
グループ名: linuxacademy
パスワード: x(セキュリティ上表示しない)
グループ番号(GID): 1001
所属メンバー一覧: student
### グループを操作
groupaddコマンド: グループを追加
groupmodコマンド: グループを編集
groupdel: グループを削除
### グループにメンバーを追加・解除
usermodコマンド
### ファイルやディレクトリに対してグループのアクセス権を設定
chmodコマンド
### グループ作成
-g: グループIDを指定する
$ sudo groupadd -g 2000 hpscript
なるほどー 実際に手を動かして大分理解した。
コンソール上でRHEL8のEC2を起動する
$ ssh ec2-user@* -i ~/.ssh/*.pem
$ cat /etc/redhat-release
Red Hat Enterprise Linux release 8.5 (Ootpa)
### リポジトリの追加
$ sudo yum -y localinstall https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
$ sudo yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
$ sudo yum -y install https://rpms.remirepo.net/enterprise/remi-release-8.rpm
### postgresqlインストール
$ yum install postgresql postgresql-server
– バージョン確認
$ rpm -qa | grep postgres
postgresql-server-10.19-1.module+el8.6.0+13642+78853f5a.x86_64
postgresql-10.19-1.module+el8.6.0+13642+78853f5a.x86_64
– アカウントが作成されていることを確認
$ cat /etc/passwd | grep postgres
postgres:x:26:26:PostgreSQL Server:/var/lib/pgsql:/bin/bash
### DBセットアップ
$ sudo su – postgres
$ postgresql-setup initdb
### 起動及び自動起動の設定
– プロセス確認
$ ps -ef | grep postgres
$ systemctl status postgresql -l –no-pager
$ sudo systemctl start postgresql
$ systemctl status postgresql -l –no-pager
$ sudo systemctl enable postgresql
### Postgresへログイン
$ su – postgres
$ sudo su – postgres
$ psql
postgres=#
OKKKKKKKKKKKK
postgresqlのバージョンが気になるので要確認