前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >openstack ocata部署ceilometer+gnocchi

openstack ocata部署ceilometer+gnocchi

作者头像
tanmx
发布于 2018-07-16 09:23:59
发布于 2018-07-16 09:23:59
2.6K00
代码可运行
举报
运行总次数:0
代码可运行

安装Gnocchi

先决条件

1. 完成以下步骤,创建数据库

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ mysql -u root -p
  • 创建 gnocchi 数据库 复制
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
> CREATE DATABASE gnocchi;
  • 配置 gnocchi 数据库权限(这里密码为 GNOCCHI_DBPASS,按需修改) 复制
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
> GRANT ALL PRIVILEGES ON gnocchi.* TO 'gnocchi'@'localhost' IDENTIFIED BY 'GNOCCHI_DBPASS';
> GRANT ALL PRIVILEGES ON gnocchi.* TO 'gnocchi'@'%' IDENTIFIED BY 'GNOCCHI_DBPASS';
  • 退出数据库

2. 加载 admin 用户认证文件

复制

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ . admin-openrc

3. 完成以下步骤创建服务认证

  • 创建 gnocchi 用户(用户密码为 GNOCCHI_PASS) 复制
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ openstack user create --domain default --password-prompt gnocchi
  • 为 gnocchi 用户增加 admin 的角色 复制
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ openstack role add --project service --user gnocchi admin
  • 创建 gnocchi 服务实体 复制
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ openstack service create --name gnocchi --description "Metric Service" metric
  1. 创建 gnocchi 服务API endpoints复制
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ openstack endpoint create --region RegionOne metric public http://controller:8041
$ openstack endpoint create --region RegionOne metric internal http://controller:8041
$ openstack endpoint create --region RegionOne metric admin http://controller:8041

安装和配置组件

1. 安装软件包

复制

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# yum install openstack-gnocchi-api openstack-gnocchi-metricd python2-gnocchiclient -y

2. 编辑 /etc/gnocchi/gnocchi.conf 文件加入以下内容

复制

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# /etc/gnocchi/gnocchi.conf

[DEFAULT]
log_dir = /var/log/gnocchi

[api]
auth_mode = keystone

[indexer]
url = mysql+pymysql://gnocchi:GNOCCHI_DBPASS@controller/gnocchi

[storage]
driver = file
file_basepath = /var/lib/gnocchi

[keystone_authtoken]
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = gnocchi
password = GNOCCHI_PASS

3. 新建 10-gnocchi_wsgi.conf 文件,加入以下内容

复制

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# vim /etc/httpd/conf.d/10-gnocchi_wsgi.conf

Listen 8041

<VirtualHost *:8041>
  ServerName controller

  ## Vhost docroot
  DocumentRoot "/var/www/cgi-bin/gnocchi"

  ## Directories, there should at least be a declaration for /var/www/cgi-bin/gnocchi

  <Directory "/var/www/cgi-bin/gnocchi">
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Require all granted
  </Directory>

  ## Logging
  ErrorLog "/var/log/httpd/gnocchi_wsgi_error.log"
  ServerSignature Off
  CustomLog "/var/log/httpd/gnocchi_wsgi_access.log" combined
  SetEnvIf X-Forwarded-Proto https HTTPS=1
  WSGIApplicationGroup %{GLOBAL}
  WSGIDaemonProcess gnocchi display-name=gnocchi_wsgi group=gnocchi processes=8 threads=8 user=gnocchi
  WSGIProcessGroup gnocchi
  WSGIScriptAlias / "/var/www/cgi-bin/gnocchi/app"
</VirtualHost>

4. 复制 app.wsgi

复制

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# mkdir /var/www/cgi-bin/gnocchi/
# cp /usr/lib/python2.7/site-packages/gnocchi/rest/app.wsgi /var/www/cgi-bin/gnocchi/app
# chown -R gnocchi.gnocchi /var/www/cgi-bin/gnocchi

5. 完成安装

1. 初始化数据库

复制

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# su -s /bin/bash gnocchi -c "gnocchi-upgrade"
2. 重启 httpd 以加载 gnocchi

复制

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# systemctl restart httpd
3. 启动服务并设置开机自启

复制

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# systemctl enable openstack-gnocchi-metricd 
# systemctl start openstack-gnocchi-metricd

Telemetry 服务

Aodh 服务 (ceilometer节点)

先决条件

1. 完成以下步骤,创建数据库
  • 使用 root 用户登录数据库 复制
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ mysql -u root -p
  • 创建 aodh 数据库 复制
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
> CREATE DATABASE aodh;
  • 配置 aodh 数据库权限(这里密码为 AODH_DBPASSWORD,按需修改) 复制
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
> GRANT ALL PRIVILEGES ON aodh.* TO 'aodh'@'localhost' IDENTIFIED BY 'AODH_DBPASSWORD';
> GRANT ALL PRIVILEGES ON aodh.* TO 'aodh'@'%' IDENTIFIED BY 'AODH_DBPASSWORD';
  • 退出数据库
2. 加载 admin 用户认证文件

复制

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ . admin-openrc
3. 完成一下步骤创建服务认证
  • 创建 aodh 用户(用户密码为 AODH_PASSWORD) 复制
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ openstack user create --domain default --password-prompt aodh
  • 为 aodh 用户增加 admin 的角色 复制
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ openstack role add --project service --user aodh admin
  • 创建 aodh 服务实体 复制
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ openstack service create --name aodh --description "Telemetry" alarming
  1. 创建告警服务API endpoints复制
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ openstack endpoint create --region RegionOne alarming public http://controller:8042
$ openstack endpoint create --region RegionOne alarming internal http://controller:8042
$ openstack endpoint create --region RegionOne alarming admin http://controller:8042

安装和配置组件

1. 安装软件包

复制

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# yum install openstack-aodh-api \
  openstack-aodh-evaluator openstack-aodh-notifier \
  openstack-aodh-listener openstack-aodh-expirer \
  python-aodhclient -y
2. 编辑 /etc/aodh/aodh.conf 文件加入以下内容

复制

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# vim /etc/aodh/aodh.conf

[DEFAULT]
transport_url = rabbit://openstack:root1234@controller
auth_strategy = keystone

[database]
connection = mysql+pymysql://aodh:AODH_DBPASSWORD@controller/aodh

[keystone_authtoken]
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = aodh
password = AODH_PASSWORD

[service_credentials]
auth_type = password
auth_url = http://controller:5000/v3
project_domain_name = default
user_domain_name = default
project_name = service
username = aodh
password = AODH_PASSWORD
interface = internalURL
region_name = RegionOne
3. 新建 /etc/httpd/conf.d/10-aodh_wsgi.conf 文件,加入以下内容

复制

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# vim /etc/httpd/conf.d/10-aodh_wsgi.conf

Listen 8042

<VirtualHost *:8042>
  ServerName controller

  ## Vhost docroot
  DocumentRoot "/var/www/cgi-bin/aodh"

  ## Directories, there should at least be a declaration for /var/www/cgi-bin/aodh

  <Directory "/var/www/cgi-bin/aodh">
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Require all granted
  </Directory>

  ## Logging
  ErrorLog "/var/log/httpd/aodh_wsgi_error.log"
  ServerSignature Off 
  CustomLog "/var/log/httpd/aodh_wsgi_access.log" combined 
  SetEnvIf X-Forwarded-Proto https HTTPS=1
  WSGIApplicationGroup %{GLOBAL}
  WSGIDaemonProcess aodh display-name=aodh_wsgi group=aodh processes=2 threads=2 user=aodh
  WSGIProcessGroup aodh
  WSGIScriptAlias / "/var/www/cgi-bin/aodh/app"
</VirtualHost>
4. 复制 app.wsgi

复制

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# mkdir /var/www/cgi-bin/aodh/
# cp /usr/lib/python2.7/site-packages/aodh/api/app.wsgi /var/www/cgi-bin/aodh/app
# chown -R aodh.aodh /var/www/cgi-bin/aodh

完成安装

1. 初始化数据库(仅当使用 SQL 数据库的时候才需要初始化)

复制

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# aodh-dbsync
2. 重启 httpd 以加载 aodh

复制

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# systemctl restart httpd
3. 启动服务并设置开机自启(任一控制节点执行)

复制

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# systemctl enable openstack-aodh-evaluator.service openstack-aodh-notifier.service openstack-aodh-listener.service
# systemctl start openstack-aodh-evaluator.service openstack-aodh-notifier.service openstack-aodh-listener.service

Panko 服务 (ceilometer节点)

先决条件

1. 完成以下步骤,创建数据库
  • 使用 root 用户登录数据库 复制
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ mysql -u root -p
  • 创建 panko 数据库 复制
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
> CREATE DATABASE panko;
  • 配置 panko 数据库权限(数据库密码为 e0ee97b87b0be41b5ba0 ) 复制
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
> GRANT ALL PRIVILEGES ON aodh.* TO 'panko'@'localhost' IDENTIFIED BY 'e0ee97b87b0be41b5ba0';
> GRANT ALL PRIVILEGES ON aodh.* TO 'panko'@'%' IDENTIFIED BY 'e0ee97b87b0be41b5ba0';
  • 退出数据库
2. 加载 admin 用户认证文件

复制

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ . admin-openrc
3. 完成一下步骤创建服务认证
  • 创建 panko 用户(用户密码为 PANKO_PASSWORD) 复制
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ openstack user create --domain default --password-prompt panko
  • 为 panko 用户增加 admin 的角色 复制
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ openstack role add --project service --user panko admin
  • 创建 panko 服务实体 复制
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ openstack service create --name panko --description "OpenStack Event Service" event
4. 创建Event服务API endpoints

复制

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ openstack endpoint create --region RegionOne event public http://controller:8779
$ openstack endpoint create --region RegionOne event internal http://controller:8779
$ openstack endpoint create --region RegionOne event admin http://controller:8779

安装和配置组件

1. 安装软件包

复制

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# yum install openstack-panko-api openstack-panko-common -y
2. 编辑 /etc/panko/panko.conf 文件加入以下内容

复制

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# vim /etc/panko/panko.conf

[DEFAULT]
auth_strategy = keystone
log_file = /var/log/panko/panko.log
log_dir = /var/log/panko

[api]
host=0.0.0.0
port=8779
workers=2
max_limit=1000

[database]
connection = mysql+pymysql://panko:PANKO_DBPASSWORD@controller/panko

[keystone_authtoken]
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = panko
password = PANKO_PASSWORD
3. 新建 vim /etc/httpd/conf.d/10-panko_wsgi.conf 文件,加入以下内容

复制

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Listen 8779

<VirtualHost *:8779>
  ServerName controller

  ## Vhost docroot
  DocumentRoot "/var/www/cgi-bin/panko"

  ## Directories, there should at least be a declaration for /var/www/cgi-bin/panko

  <Directory "/var/www/cgi-bin/panko">
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Require all granted
  </Directory>

  ## Logging
  ErrorLog "/var/log/httpd/panko_wsgi_error.log"
  ServerSignature Off 
  CustomLog "/var/log/httpd/panko_wsgi_access.log" combined 
  SetEnvIf X-Forwarded-Proto https HTTPS=1
  WSGIApplicationGroup %{GLOBAL}
  WSGIDaemonProcess panko display-name=panko_wsgi group=panko processes=2 threads=2 user=panko
  WSGIProcessGroup panko
  WSGIScriptAlias / "/var/www/cgi-bin/panko/app"
</VirtualHost>
4. 复制 app.wsgi

复制

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# mkdir /var/www/cgi-bin/panko/
# cp /usr/lib/python2.7/site-packages/panko/api/app.wsgi /var/www/cgi-bin/panko/app
# chown -R panko.panko /var/www/cgi-bin/panko/
5. 初始化数据

复制

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# /usr/bin/panko-dbsync

完成安装

重启 httpd 以加载 panko

复制

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# systemctl restart httpd

Ceilometer服务

安装和配置控制节点 (ceilometer节点)

Ceilometer
先决条件
1. 加载 admin 认证文件

复制

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ . admin-openrc
2. 创建服务认证,完成以下步骤
  • 创建ceilemeter用户(用户密码为 CEILOMETER_PASSWORD) 复制
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ openstack user create --domain default --password-prompt ceilometer
  • 给ceilometer用户增加admin的角色 复制
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ openstack role add --project service --user ceilometer admin
  • 创建ceilometer服务实体 复制
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ openstack service create --name ceilometer --description "Telemetry" metering
  • 创建 Telemetry 服务 API endpoint 复制
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ openstack endpoint create --region RegionOne metering public http://controller:8777
$ openstack endpoint create --region RegionOne metering internal http://controller:8777
$ openstack endpoint create --region RegionOne metering admin http://controller:8777
安装并配置组件
1. 安装软件包

复制

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# yum install openstack-ceilometer-api \
  openstack-ceilometer-collector openstack-ceilometer-notification \
  openstack-ceilometer-central python-ceilometerclient  -y
2. 编辑 /etc/ceilometer/ceilometer.conf 文件加入以下内容

复制

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# vim /etc/ceilometer/ceilometer.conf
[DEFAULT]
transport_url = rabbit://openstack:root1234@controller
auth_strategy = keystone
meter_dispatchers=gnocchi
event_dispatchers=gnocchi

[dispatcher_gnocchi]
filter_service_activity = False
archive_policy = high
resources_definition_file=gnocchi_resources.yaml
url=http://controller:8041

[keystone_authtoken]
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = ceilometer
password = CEILOMETER_PASSWORD
service_token_roles_required = True

[service_credentials]
auth_type = password
auth_url = http://controller:5000/v3
project_domain_name = default
user_domain_name = default
project_name = service
username = ceilometer
password = CEILOMETER_PASSWORD
interface = internalURL
region_name = RegionOne
3. 新建 /etc/httpd/conf.d/10-ceilometer_wsgi.conf 文件,加入以下内容

复制

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# vim /etc/httpd/conf.d/10-ceilometer_wsgi.conf

Listen 8777

<VirtualHost *:8777>
  ServerName controller

  ## Vhost docroot
  DocumentRoot "/var/www/cgi-bin/ceilometer"

  ## Directories, there should at least be a declaration for /var/www/cgi-bin/ceilometer

  <Directory "/var/www/cgi-bin/ceilometer">
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Require all granted
  </Directory>

  ## Logging
  ErrorLog "/var/log/httpd/ceilometer_wsgi_error.log"
  ServerSignature Off 
  CustomLog "/var/log/httpd/ceilometer_wsgi_access.log" combined 
  SetEnvIf X-Forwarded-Proto https HTTPS=1
  WSGIApplicationGroup %{GLOBAL}
  WSGIDaemonProcess ceilometer display-name=ceilometer_wsgi group=ceilometer processes=1 threads=2 user=ceilometer
  WSGIProcessGroup ceilometer
  WSGIScriptAlias / "/var/www/cgi-bin/ceilometer/app"
</VirtualHost>
4. 复制 app.wsgi

复制

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# mkdir /var/www/cgi-bin/ceilometer/
# cp /usr/lib/python2.7/site-packages/ceilometer/api/app.wsgi /var/www/cgi-bin/ceilometer/app
# chown -R ceilometer.ceilometer /var/www/cgi-bin/ceilometer/
  1. 运行一下命令在gnocchi中创建ceilometer的资源复制
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# ceilometer-upgrade --skip-metering-database
完成安装
1. 重启 httpd 以加载 ceilometer

复制

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# systemctl restart httpd
2. 启动服务并设置开机自启

复制

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# systemctl enable openstack-ceilometer-notification.service \
  openstack-ceilometer-central.service \
  openstack-ceilometer-collector.service
# systemctl start openstack-ceilometer-notification.service \
  openstack-ceilometer-central.service \
  openstack-ceilometer-collector.service

安装和配置计算节点 (计算节点)

安装并配置组件
1. 安装软件包

复制

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# yum install openstack-ceilometer-compute python2-wsme
2. 编辑 /etc/ceilometer/ceilometer.conf 文件加入已下内容

复制

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# vim /etc/ceilometer/ceilometer.conf
[DEFAULT]
transport_url = rabbit://openstack:root1234@controller
auth_strategy = keystone

[keystone_authtoken]
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller01:11211,controller02:11211,controller03:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = ceilometer
password = CEILOMETER_PASSWORD

[service_credentials]
auth_url = http://controller:5000
project_domain_id = default
user_domain_id = default
auth_type = password
username = ceilometer
project_name = service
password = CEILOMETER_PASSWORD
interface = internalURL
region_name = RegionOne
配置计算节点使用Telemetry

编辑 /etc/nova/nova.conf 加入以下内容

复制

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# vim /etc/nova/nova.conf
[DEFAULT]
instance_usage_audit = True
instance_usage_audit_period = hour
notify_on_state_change = vm_and_task_state

[oslo_messaging_notifications]
driver = messagingv2
完成安装
1. 启动agent并设置开机自启

复制

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# systemctl enable openstack-ceilometer-compute.service
# systemctl start openstack-ceilometer-compute.service
2. 重启计算服务

复制

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# systemctl restart openstack-nova-compute.service

配置 opesntack 服务以支持ceilometer (控制节点)

Cinder

1. 配置cinder使用telemetry

编辑/etc/cinder/cinder.conf文件加入以下内容

复制

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[oslo_messaging_notifications]
driver = messagingv2

2. 通过定时任务获取阶段性的通知,例如没5分钟执行一次

复制

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# crontab -e

*/5 * * * * /usr/bin/cinder-volume-usage-audit --send_actions

3. 重启服务

复制

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# systemctl restart openstack-cinder-api.service openstack-cinder-scheduler.service openstack-cinder-volume.service

Glance

1. 配置镜像服务使用telemetry

编辑/etc/glance/glance-api.conf 和 /etc/glance/glance-registry.conf

复制

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[DEFAULT]
transport_url = rabbit://openstack:root1234@controller

[oslo_messaging_notifications]
driver = messagingv2

2. 重启服务

复制

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# systemctl restart openstack-glance-api.service openstack-glance-registry.service

Neutron

1. 配置网络服务使用telemetry

编辑 /etc/neutron/neutron.conf 文件加入以下内容

复制

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[oslo_messaging_notifications]
driver = messagingv2

2. 重启服务

复制

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# systemctl restart neutron-server.service

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-01-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
大数据开发:关于JVM内存模型JMM详解
Java内存模型(Java Memory Model ,JMM)就是一种符合内存模型规范的,屏蔽了各种硬件和操作系统的访问差异的,保证了Java程序在各种平台下对内存的访问都能保证效果一致的机制及规范。
成都加米谷大数据
2021/02/02
5270
大数据开发:关于JVM内存模型JMM详解
Java的运行时数据区域
Java 虚拟机在执行 Java 程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域有各自的用途,以及创建和销毁的时间,有些区域随着虚拟机进程的启动而一直存在,有些区域则是依赖用户线程的启动和结束而建立和销毁。
真正的飞鱼
2023/04/02
4820
Java的运行时数据区域
Jvm内存模型深度理解
之前是对jvm内存模型一知半解,本次打算抽时间认认真真的理解一遍jvm内存模型,在这个过程中遇到了好多问题,针对这些问题查询资料再加上自己的理解对jvm内存模型做一个理解分析,自己对jvm内存模型的理解还不够彻底,也还有思考不明白的问题,希望大家一起讨论学习,也能够让我搞明白一些困惑。
XING辋
2019/03/26
2.2K0
Jvm内存模型深度理解
Java内存区域有哪些构成?
Java 内存区域, 也叫运行时数据区域、内存区域、JVM内存模型,和 Java 虚拟机(JVM)的运行时区域相关,是指 JVM运行时将数据分区域存储,强调对内存空间的划分。 经常与Java内存模型(JMM)混淆,其定义了程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变量这样的底层细节。 JVM并不是只有唯一版本的,在Java发展历史中,有许多优秀的Java虚拟机,其中目前大家最熟悉的就是HotSpot虚拟机,什么你不知道?
Jensen_97
2023/07/19
3530
Java内存区域有哪些构成?
JVM运行时数据区
程序计数器是一块较小的内存空间,可以看做是字节码解释器的行号指示器。字节码解释器在工作时通过改变计数器的值来选取下一条需要执行的字节码指令,分支、循环、异常处理、跳转等功能都是通过计数器实现的。 为了保证线程切换回来恢复到正确的位置,每个线程都有独立的程序计数器,每个线程独立存储,互不影响,是线程私有的。
Li_XiaoJin
2022/06/10
2130
JVM运行时数据区
JAVA运行时数据区域
根据《Java 虚拟机规范(Java SE 7版)》规定,Java虚拟机所管理的内存将会包括一下几个运行时数据区域:
爱撸猫的杰
2019/03/28
5320
JAVA运行时数据区域
JVM运行时数据区知多少
java引以为豪的就是内存自动化管理,不需要像C、C++等一样需要开发者手动获取内存、释放内存,对内存进行操作等,java在这方面做的非常好、非常方便。所以,了解java内存区域是怎么划分的是非常有必要的,面试的时候也是经常会问到的。
索码理
2022/12/28
3500
JVM运行时数据区知多少
探究JVM——运行时数据区
最近在读《深入理解Java虚拟机》,收获颇丰,记录一下,部分内容摘自原书。 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和销毁
欠扁的小篮子
2018/04/11
6520
探究JVM——运行时数据区
JVM-01Java内存区域与内存溢出异常(上)【运行时区域数据】
在内存管理领域 ,C/C++内存管理由开发人员管理,既拥有每一个对象的所有权,还必须负责维护每一个对象生命从开始到终结的责任
小小工匠
2021/08/16
3830
8张图 带你理解Java内存区域
Java内存区域是指 JVM运行时将数据分区域存储 ,简单的说就是不同的数据放在不同的地方。通常又叫 运行时数据区域。
HaC
2020/11/16
3.3K0
JVM运行时数据区和各个区域的作用
JVM在执行JAVA程序时会把它管理的内存区域划分为若干个不同的数据区域,统称为运行时数据区,由图可见JVM程序所占的内可划分成5个部分:程序计数器、虚拟机栈(线程栈)、本地方法栈、堆(heap)和方法区(内含常量池),其中方法区和堆被所有线程共享。下面分别介绍各部分的功能:
allsmallpig
2021/02/25
1.4K0
JVM运行时数据区域及GC
方法区 (Method Area or Permanent Generation):
哲洛不闹
2018/09/14
3870
JVM笔记【1】-- 运行时数据区
C/C++每一个new操作都需要自己去delete/free,而java里面有虚拟机自动管理内存,不容易出现内存泄漏或者溢出的问题,但是不容易出现不代表不出现,了解虚拟机怎么使用和管理内存是十分重要的是,对程序优化或者问题排查有帮助。
秦怀杂货店
2022/02/15
2030
JVM笔记【1】-- 运行时数据区
JVM 系列(1) —— 运行时数据区域
Java 虚拟机会在 Java 运行程序的过程中把它所管理的内存分为若干个不同的数据区域
求和小熊猫
2020/12/16
2880
JVM 系列(1) —— 运行时数据区域
JVM笔记【1】-- 运行时数据区
C/C++每一个new操作都需要自己去delete/free,而java里面有虚拟机自动管理内存,不容易出现内存泄漏或者溢出的问题,但是不容易出现不代表不出现,了解虚拟机怎么使用和管理内存是十分重要的是,对程序优化或者问题排查有帮助。
秦怀杂货店
2020/12/26
2430
JDK8之后-JVM运行时数据区域
首先弄清几个概念: 1.方法区(method area)只是JVM规范中定义的一个概念,用于存储类信息、常量池、静态变量、JIT编译后的代码等数据,具体放在哪里,不同的实现可以放在不同的地方。永久代是HotSpot虚拟机特有的概念,是对方法区的实现,别的JVM没有永久代的概念。(虽然去除了永久代,但是方法区作为概念上的区域仍然存在) 2.在JDK8中,JDK8的HotSpot VM已经是以前的HotSpot VM与JRockit VM的合并版,也就是传说中的“HotRockit”,只是产品里名字还是叫HotSpot VM。所以对于说JDK8去除永久代换成元空间的说法,就是默指的合并后的HotSpot虚拟机。 3.为什么要将永久代去除呢? 一方面是节省空间,避免了常见的永久内存错误:java.lang.OutOfMemoryError: PermGen问题。另一方面是为了整合JRockit,因为JRockit没有永代区这样类似的空间。 其实,从jdk7开始,就开始了永久代的转移工作,将譬如符号引用(Symbols)转移到了native heap;字面量(interned strings)转移到了java heap;等。但是指导JDK8永久代才被元空间替代。 4.元空间又是什么呢?以前存储在永久代里面的数据现在存在了哪里? 元空间是一块与堆不相连的本地内存。原本存在永久代的数据,一部分移到了java堆里面,一部分移到了本地内存里面(即元空间)(文档中原句:Move part of the contents of the permanent generation in Hotspot to the Java heap and the remainder to native memory.) 。永久代中原来存储的字符串常量(池)、符号引用(这两个在jdk7普遍就已经将其放在堆上了)和类的静态变量现在存储在java堆中,其余的数据作为元数据存储在元空间中。 5.什么是元数据呢? 元数据是数据的数据或者叫做用来描述数据的数据或者叫做信息的信息。(比如原本方法区存储的类信息、即时编译器编译后的代码等),也可以把元数据简单的理解成,最小的数据单位。元数据可以为数据说明其元素或属性(名称、大小、数据类型、等),或其结构(长度、字段、数据列),或其相关数据(位于何处、如何联系、拥有者)。 6.元空间详细:http://blog.csdn.net/lk7688535/article/details/51767460
洋仔聊编程
2019/01/15
1.6K0
Java运行时数据区域
Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。其包括:程序计数器、Java虚拟机栈、本地方法栈、Java堆和方法区。
conanma
2021/12/06
3440
JVM 运行时数据区域,书中没有说清楚的方法区、永久代、元空间
数据库系列吭哧吭哧写得差不多了,准备寒假看完 JVM,然后开学来看看框架背背八股就准备秋招了。话不多说,JVM 第一个知识点必定要奉献给 Java 程序运行时的数据区域划分。
飞天小牛肉
2022/02/23
7180
JVM 运行时数据区域,书中没有说清楚的方法区、永久代、元空间
JVM 运行时数据区详解
  Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同数据区域。
阿豪聊干货
2018/08/09
3450
JVM 运行时数据区详解
JVM--运行时数据区
Java虚拟机在执行Java程序时,会把它所管理的内存划分为若干个数据区域,这些区域各有各的用途。
SuperHeroes
2019/03/12
4410
相关推荐
大数据开发:关于JVM内存模型JMM详解
更多 >
LV.1
这个人很懒,什么都没有留下~
目录
  • 安装Gnocchi
    • 先决条件
      • 1. 完成以下步骤,创建数据库
      • 2. 加载 admin 用户认证文件
      • 3. 完成以下步骤创建服务认证
      • 安装和配置组件
      • 1. 安装软件包
      • 2. 编辑 /etc/gnocchi/gnocchi.conf 文件加入以下内容
      • 3. 新建 10-gnocchi_wsgi.conf 文件,加入以下内容
      • 4. 复制 app.wsgi
      • 5. 完成安装
  • Telemetry 服务
    • Aodh 服务 (ceilometer节点)
      • 先决条件
      • 安装和配置组件
      • 完成安装
    • Panko 服务 (ceilometer节点)
      • 先决条件
      • 安装和配置组件
      • 完成安装
    • Ceilometer服务
      • 安装和配置控制节点 (ceilometer节点)
      • 安装和配置计算节点 (计算节点)
  • 配置 opesntack 服务以支持ceilometer (控制节点)
    • Cinder
      • 1. 配置cinder使用telemetry
      • 2. 通过定时任务获取阶段性的通知,例如没5分钟执行一次
      • 3. 重启服务
    • Glance
      • 1. 配置镜像服务使用telemetry
      • 2. 重启服务
    • Neutron
      • 1. 配置网络服务使用telemetry
      • 2. 重启服务
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档