diff --git a/LICENSE.txt b/LICENSE.txt
index 63c614cda48763..e28911d07a4092 100644
--- a/LICENSE.txt
+++ b/LICENSE.txt
@@ -718,3 +718,11 @@ LICENSE file in the root directory of this source tree. An additional grant
of patent rights can be found in the PATENTS file in the same directory.
----------------------------------------------------------------------------------
+
+me.bechberger.ap-loader-all: Apache 2.0 license
+
+Apache 2.0, Copyright 2023 SAP SE or an SAP affiliate company, Johannes Bechberger and ap-loader contributors
+
+This project is maintained by the SapMachine team at SAP SE
+
+----------------------------------------------------------------------------------
\ No newline at end of file
diff --git a/bin/profile_fe.sh b/bin/profile_fe.sh
new file mode 100755
index 00000000000000..1481cce4069596
--- /dev/null
+++ b/bin/profile_fe.sh
@@ -0,0 +1,63 @@
+#!/usr/bin/env bash
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+curdir="$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd)"
+
+DORIS_HOME="$(
+ cd "${curdir}/.." || exit 1
+ pwd
+)"
+export DORIS_HOME
+echo "DORIS_HOME: ${DORIS_HOME}"
+
+if [[ -z "${JAVA_HOME}" ]]; then
+ if ! command -v java &>/dev/null; then
+ JAVA=""
+ else
+ JAVA="$(command -v java)"
+ fi
+else
+ JAVA="${JAVA_HOME}/bin/java"
+fi
+echo "JAVA: ${JAVA}"
+
+if [[ ! -x "${JAVA}" ]]; then
+ echo "The JAVA_HOME environment variable is not set correctly"
+ echo "This environment variable is required to run this program"
+ echo "Note: JAVA_HOME should point to a JDK and not a JRE"
+ echo "You can set JAVA_HOME in the fe.conf configuration file"
+ exit 1
+fi
+
+FE_PID=$(jps | grep DorisFE | awk '{print $1}')
+if [[ -z "${FE_PID}" ]]; then
+ echo "DorisFe not started"
+ exit 1
+fi
+echo "DorisFE pid: ${FE_PID}"
+
+mkdir -p "${DORIS_HOME}/log"
+NOW=$(date +'%Y%m%d%H%M%S')
+PROFILE_OUTPUT="${DORIS_HOME}/log/profile_${NOW}.html"
+if [[ -z "${PROFILE_SECONDS}" ]]; then
+ PROFILE_SECONDS="10"
+fi
+
+echo "Begin profiling ${PROFILE_SECONDS} seconds and generate flame graph to ${PROFILE_OUTPUT}..."
+${JAVA} -jar "${DORIS_HOME}"/lib/ap-loader-all-*.jar profiler -a -n -l -i 200us -d "${PROFILE_SECONDS}" -f "${PROFILE_OUTPUT}" "${FE_PID}"
+echo "Generated flame graph to ${PROFILE_OUTPUT}"
diff --git a/fe/fe-core/pom.xml b/fe/fe-core/pom.xml
index 22b60de41e20b2..fb8d7ba3950b68 100644
--- a/fe/fe-core/pom.xml
+++ b/fe/fe-core/pom.xml
@@ -640,8 +640,8 @@ under the License.
org.apache.parquet
parquet-avro
-
-
+
+
org.mariadb.jdbc
mariadb-java-client
@@ -760,6 +760,11 @@ under the License.
hbase-hadoop-compat
2.5.2-hadoop3
+
+ me.bechberger
+ ap-loader-all
+ 3.0-8
+